{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# read in data，数据在xgboost安装的路径下的demo目录,现在我们将其copy到当前代码下的data目录\n",
    "dpath = '/Users/limeng/Desktop/ML\\DL learn/CSDN/正式课程/week3/commodities_classification/code/data/'\n",
    "train = pd.read_csv(dpath + 'RentListingInquries_FE_train.csv')\n",
    "test = pd.read_csv(dpath + 'RentListingInquries_FE_test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>49352.00000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.0</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.21218</td>\n",
       "      <td>1.541640</td>\n",
       "      <td>3.830174e+03</td>\n",
       "      <td>1.697863e+03</td>\n",
       "      <td>1.657567e+03</td>\n",
       "      <td>-0.329460</td>\n",
       "      <td>2.753820</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.014852</td>\n",
       "      <td>15.206881</td>\n",
       "      <td>...</td>\n",
       "      <td>0.003080</td>\n",
       "      <td>0.000385</td>\n",
       "      <td>0.186477</td>\n",
       "      <td>0.009361</td>\n",
       "      <td>0.000446</td>\n",
       "      <td>0.028165</td>\n",
       "      <td>0.002026</td>\n",
       "      <td>0.001013</td>\n",
       "      <td>0.000952</td>\n",
       "      <td>1.616895</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.50142</td>\n",
       "      <td>1.115018</td>\n",
       "      <td>2.206687e+04</td>\n",
       "      <td>1.100477e+04</td>\n",
       "      <td>7.817996e+03</td>\n",
       "      <td>0.947732</td>\n",
       "      <td>1.446091</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.824442</td>\n",
       "      <td>8.280749</td>\n",
       "      <td>...</td>\n",
       "      <td>0.055412</td>\n",
       "      <td>0.019618</td>\n",
       "      <td>0.389495</td>\n",
       "      <td>0.101625</td>\n",
       "      <td>0.021109</td>\n",
       "      <td>0.165446</td>\n",
       "      <td>0.044969</td>\n",
       "      <td>0.031814</td>\n",
       "      <td>0.030846</td>\n",
       "      <td>0.626035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>2.150000e+01</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>-5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.500000e+03</td>\n",
       "      <td>1.225000e+03</td>\n",
       "      <td>1.066667e+03</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1.500000e+03</td>\n",
       "      <td>1.383417e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4.100000e+03</td>\n",
       "      <td>1.850000e+03</td>\n",
       "      <td>1.962500e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>10.00000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>4.490000e+06</td>\n",
       "      <td>2.245000e+06</td>\n",
       "      <td>1.496667e+06</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>13.500000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         bathrooms      bedrooms         price  price_bathrooms  \\\n",
       "count  49352.00000  49352.000000  4.935200e+04     4.935200e+04   \n",
       "mean       1.21218      1.541640  3.830174e+03     1.697863e+03   \n",
       "std        0.50142      1.115018  2.206687e+04     1.100477e+04   \n",
       "min        0.00000      0.000000  4.300000e+01     2.150000e+01   \n",
       "25%        1.00000      1.000000  2.500000e+03     1.225000e+03   \n",
       "50%        1.00000      1.000000  3.150000e+03     1.500000e+03   \n",
       "75%        1.00000      2.000000  4.100000e+03     1.850000e+03   \n",
       "max       10.00000      8.000000  4.490000e+06     2.245000e+06   \n",
       "\n",
       "       price_bedrooms     room_diff      room_num     Year         Month  \\\n",
       "count    4.935200e+04  49352.000000  49352.000000  49352.0  49352.000000   \n",
       "mean     1.657567e+03     -0.329460      2.753820   2016.0      5.014852   \n",
       "std      7.817996e+03      0.947732      1.446091      0.0      0.824442   \n",
       "min      4.300000e+01     -5.000000      0.000000   2016.0      4.000000   \n",
       "25%      1.066667e+03     -1.000000      2.000000   2016.0      4.000000   \n",
       "50%      1.383417e+03      0.000000      2.000000   2016.0      5.000000   \n",
       "75%      1.962500e+03      0.000000      4.000000   2016.0      6.000000   \n",
       "max      1.496667e+06      8.000000     13.500000   2016.0      6.000000   \n",
       "\n",
       "                Day       ...                walk         walls           war  \\\n",
       "count  49352.000000       ...        49352.000000  49352.000000  49352.000000   \n",
       "mean      15.206881       ...            0.003080      0.000385      0.186477   \n",
       "std        8.280749       ...            0.055412      0.019618      0.389495   \n",
       "min        1.000000       ...            0.000000      0.000000      0.000000   \n",
       "25%        8.000000       ...            0.000000      0.000000      0.000000   \n",
       "50%       15.000000       ...            0.000000      0.000000      0.000000   \n",
       "75%       22.000000       ...            0.000000      0.000000      0.000000   \n",
       "max       31.000000       ...            1.000000      1.000000      1.000000   \n",
       "\n",
       "             washer         water    wheelchair          wifi       windows  \\\n",
       "count  49352.000000  49352.000000  49352.000000  49352.000000  49352.000000   \n",
       "mean       0.009361      0.000446      0.028165      0.002026      0.001013   \n",
       "std        0.101625      0.021109      0.165446      0.044969      0.031814   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        2.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "               work  interest_level  \n",
       "count  49352.000000    49352.000000  \n",
       "mean       0.000952        1.616895  \n",
       "std        0.030846        0.626035  \n",
       "min        0.000000        0.000000  \n",
       "25%        0.000000        1.000000  \n",
       "50%        0.000000        2.000000  \n",
       "75%        0.000000        2.000000  \n",
       "max        1.000000        2.000000  \n",
       "\n",
       "[8 rows x 228 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看数据情况:\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.0000</td>\n",
       "      <td>1.000000e+04</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.0</td>\n",
       "      <td>10000.00000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.00000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.00000</td>\n",
       "      <td>10000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.210100</td>\n",
       "      <td>1.5254</td>\n",
       "      <td>3.782144e+03</td>\n",
       "      <td>1678.937400</td>\n",
       "      <td>1649.008452</td>\n",
       "      <td>-0.315300</td>\n",
       "      <td>2.735500</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.01870</td>\n",
       "      <td>15.191100</td>\n",
       "      <td>...</td>\n",
       "      <td>0.002900</td>\n",
       "      <td>0.000500</td>\n",
       "      <td>0.184600</td>\n",
       "      <td>0.007800</td>\n",
       "      <td>0.00070</td>\n",
       "      <td>0.024500</td>\n",
       "      <td>0.002300</td>\n",
       "      <td>0.001400</td>\n",
       "      <td>0.00070</td>\n",
       "      <td>1.623600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.510621</td>\n",
       "      <td>1.1099</td>\n",
       "      <td>1.173437e+04</td>\n",
       "      <td>5805.953166</td>\n",
       "      <td>3945.873715</td>\n",
       "      <td>0.951959</td>\n",
       "      <td>1.441873</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.82439</td>\n",
       "      <td>8.271567</td>\n",
       "      <td>...</td>\n",
       "      <td>0.053776</td>\n",
       "      <td>0.022356</td>\n",
       "      <td>0.387992</td>\n",
       "      <td>0.090222</td>\n",
       "      <td>0.02645</td>\n",
       "      <td>0.154603</td>\n",
       "      <td>0.047906</td>\n",
       "      <td>0.037392</td>\n",
       "      <td>0.02645</td>\n",
       "      <td>0.621258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>4.010000e+02</td>\n",
       "      <td>200.500000</td>\n",
       "      <td>200.500000</td>\n",
       "      <td>-4.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>2.495000e+03</td>\n",
       "      <td>1225.000000</td>\n",
       "      <td>1066.666667</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.00000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.0000</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1500.000000</td>\n",
       "      <td>1396.250000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.00000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.0000</td>\n",
       "      <td>4.095000e+03</td>\n",
       "      <td>1850.000000</td>\n",
       "      <td>1975.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.00000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>10.000000</td>\n",
       "      <td>6.0000</td>\n",
       "      <td>1.150000e+06</td>\n",
       "      <td>575000.000000</td>\n",
       "      <td>383333.333333</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.00000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          bathrooms    bedrooms         price  price_bathrooms  \\\n",
       "count  10000.000000  10000.0000  1.000000e+04     10000.000000   \n",
       "mean       1.210100      1.5254  3.782144e+03      1678.937400   \n",
       "std        0.510621      1.1099  1.173437e+04      5805.953166   \n",
       "min        0.000000      0.0000  4.010000e+02       200.500000   \n",
       "25%        1.000000      1.0000  2.495000e+03      1225.000000   \n",
       "50%        1.000000      1.0000  3.150000e+03      1500.000000   \n",
       "75%        1.000000      2.0000  4.095000e+03      1850.000000   \n",
       "max       10.000000      6.0000  1.150000e+06    575000.000000   \n",
       "\n",
       "       price_bedrooms     room_diff      room_num     Year        Month  \\\n",
       "count    10000.000000  10000.000000  10000.000000  10000.0  10000.00000   \n",
       "mean      1649.008452     -0.315300      2.735500   2016.0      5.01870   \n",
       "std       3945.873715      0.951959      1.441873      0.0      0.82439   \n",
       "min        200.500000     -4.500000      0.000000   2016.0      4.00000   \n",
       "25%       1066.666667     -1.000000      2.000000   2016.0      4.00000   \n",
       "50%       1396.250000      0.000000      2.000000   2016.0      5.00000   \n",
       "75%       1975.000000      0.000000      4.000000   2016.0      6.00000   \n",
       "max     383333.333333      8.000000     12.000000   2016.0      6.00000   \n",
       "\n",
       "                Day       ...                walk         walls           war  \\\n",
       "count  10000.000000       ...        10000.000000  10000.000000  10000.000000   \n",
       "mean      15.191100       ...            0.002900      0.000500      0.184600   \n",
       "std        8.271567       ...            0.053776      0.022356      0.387992   \n",
       "min        1.000000       ...            0.000000      0.000000      0.000000   \n",
       "25%        8.000000       ...            0.000000      0.000000      0.000000   \n",
       "50%       15.000000       ...            0.000000      0.000000      0.000000   \n",
       "75%       22.000000       ...            0.000000      0.000000      0.000000   \n",
       "max       31.000000       ...            1.000000      1.000000      1.000000   \n",
       "\n",
       "             washer        water    wheelchair          wifi       windows  \\\n",
       "count  10000.000000  10000.00000  10000.000000  10000.000000  10000.000000   \n",
       "mean       0.007800      0.00070      0.024500      0.002300      0.001400   \n",
       "std        0.090222      0.02645      0.154603      0.047906      0.037392   \n",
       "min        0.000000      0.00000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.00000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.00000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.00000      0.000000      0.000000      0.000000   \n",
       "max        2.000000      1.00000      1.000000      1.000000      1.000000   \n",
       "\n",
       "              work  interest_level  \n",
       "count  10000.00000    10000.000000  \n",
       "mean       0.00070        1.623600  \n",
       "std        0.02645        0.621258  \n",
       "min        0.00000        0.000000  \n",
       "25%        0.00000        1.000000  \n",
       "50%        0.00000        2.000000  \n",
       "75%        0.00000        2.000000  \n",
       "max        1.00000        2.000000  \n",
       "\n",
       "[8 rows x 228 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#随机抽取10000样本进行快速实验\n",
    "train = train.sample(n=10000, frac=None, replace=False, weights=None, random_state=None, axis=None)\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAELCAYAAADOeWEXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAGZNJREFUeJzt3X+wJWV95/H3BxCN8ccMOlIEmAzq\nxIhrRDIBlJSJYvjlrkNcSbDcOCHUjlahYpnNCtksVCAm5oeaEFc2UwEzZI2ARGVUIplMQFcSkQEB\nBXRnQgzMQmB0AFFWLPC7f5znZg7D/dE9c88993Lfr6pT3f09T3d/D7fGr9399POkqpAkqau9xp2A\nJGlhsXBIknqxcEiSerFwSJJ6sXBIknqxcEiSerFwSJJ6sXBIknqxcEiSetln3AmMwnOf+9xasWLF\nuNOQpAXlhhtu+FZVLZup3ZOycKxYsYLNmzePOw1JWlCS/EuXdt6qkiT1YuGQJPVi4ZAk9WLhkCT1\nYuGQJPUyssKR5EVJbhr6fCfJu5Lsl2Rjki1tubS1T5Lzk2xNckuSw4eOtaa135JkzahyliTNbGSF\no6q+UVWHVdVhwE8DDwOfBM4ENlXVSmBT2wY4AVjZPmuBCwCS7AecAxwJHAGcM1FsJElzb65uVR0D\n/FNV/QuwGljf4uuBk9r6auDiGvgSsCTJAcBxwMaq2lFV9wMbgePnKG9J0i7mqnCcAnysre9fVfcA\ntOXzWvxA4K6hfba12FRxSdIYjPzN8ST7Aq8Hzpqp6SSxmia+63nWMrjFxfLly3tmKWkcjv7To8ed\nwpPete+4dtaPORdXHCcAN1bVvW373nYLira8r8W3AQcP7XcQcPc08cepqnVVtaqqVi1bNuNQK5Kk\n3TQXheNN7LxNBbABmOgZtQa4Yij+lta76ijgwXYr6yrg2CRL20PxY1tMkjQGI71VleTpwC8Abx0K\nvw+4LMlpwJ3AyS1+JXAisJVBD6xTAapqR5LzgOtbu3Orasco85YkTW2khaOqHgaes0vs2wx6We3a\ntoDTpzjORcBFo8hRktSPb45LknqxcEiSerFwSJJ6sXBIknqxcEiSerFwSJJ6sXBIknqxcEiSerFw\nSJJ6sXBIknqxcEiSerFwSJJ6sXBIknqxcEiSerFwSJJ6sXBIknqxcEiSerFwSJJ6sXBIknqxcEiS\n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\ni4vly5d3TU+S1FOXXlXD83I8CnyTwW2lGSV5CoOi8dGq+kQL35vkgKq6p92KmphNcBtw8NDuBwF3\nt/jP7xK/ZtdzVdU6YB3AqlWrOhc2SVI/MxaO3Z2XI4NLiwuB26vqA0NfbQDWAO9ryyuG4m9PcgmD\nB+EPtuJyFfC7Qw/EjwXO2p2cJEl7brqpY8+eZr+qqvNmOPbRDMa4+mqSm1rsNxkUjMuSnAbcyWAq\nWoArgROBrcDDwKntRDuSnMfO6WrPraodM5xbkjQi011xfG+S2I8CpwHPAaYtHFX1RSZ/PgFwzCTt\nCzh9imNdBFw03fkkSXNjuqlj3z+xnuSZwBkMrgIuAd4/1X6SpCe3aZ9xtJfv3g28mcE7F4e3dykk\nSYvUdM84/hB4A4OeSi+tqu/OWVaSpHlruhcAfx34MeC3gLuHhh15qOOQI5KkJ6HpnnH0fqtckvTk\nZ3GQJPVi4ZAk9WLhkCT1YuGQJPVi4ZAk9WLhkCT1YuGQJPVi4ZAk9WLhkCT1YuGQJPVi4ZAk9WLh\nkCT1YuGQJPVi4ZAk9WLhkCT1YuGQJPUyssKR5KIk9yX52lBsvyQbk2xpy6UtniTnJ9ma5JYkhw/t\ns6a135JkzajylSR1M8orjr8Ajt8ldiawqapWApvaNsAJwMr2WQtcAINCA5wDHAkcAZwzUWwkSeMx\nssJRVV8AduwSXg2sb+vrgZOG4hfXwJeAJUkOAI4DNlbVjqq6H9jIE4uRJGkOzfUzjv2r6h6Atnxe\nix8I3DXUbluLTRV/giRrk2xOsnn79u2znrgkaWC+PBzPJLGaJv7EYNW6qlpVVauWLVs2q8lJknaa\n68Jxb7sFRVve1+LbgIOH2h0E3D1NXJI0JnNdODYAEz2j1gBXDMXf0npXHQU82G5lXQUcm2Rpeyh+\nbItJksZkn1EdOMnHgJ8HnptkG4PeUe8DLktyGnAncHJrfiVwIrAVeBg4FaCqdiQ5D7i+tTu3qnZ9\n4C5JmkMjKxxV9aYpvjpmkrYFnD7FcS4CLprF1CRJe2C+PByXJC0QFg5JUi8ju1W1UPz0b1w87hQW\nhRv+8C3jTkHSLPGKQ5LUi4VDktSLhUOS1IuFQ5LUi4VDktSLhUOS1IuFQ5LUi4VDktSLhUOS1IuF\nQ5LUi4VDktSLhUOS1IuFQ5LUi4VDktSLhUOS1IuFQ5LUi4VDktTLgikcSY5P8o0kW5OcOe58JGmx\nWhCFI8newP8ATgAOBd6U5NDxZiVJi9OCKBzAEcDWqrqjqn4AXAKsHnNOkrQoLZTCcSBw19D2thaT\nJM2xfcadQEeZJFaPa5CsBda2ze8m+cbIsxqf5wLfGncSfeSP1ow7hflkYf39zpnsn9+itbD+dkDe\n2evv9+NdGi2UwrENOHho+yDg7uEGVbUOWDeXSY1Lks1VtWrceWj3+PdbuPzbDSyUW1XXAyuTHJJk\nX+AUYMOYc5KkRWlBXHFU1aNJ3g5cBewNXFRVt445LUlalBZE4QCoqiuBK8edxzyxKG7JPYn591u4\n/NsBqaqZW0mS1CyUZxySpHnCwrHAOPTKwpXkoiT3JfnauHNRP0kOTnJ1ktuT3JrkjHHnNE7eqlpA\n2tAr/wf4BQZdlK8H3lRVt401MXWS5FXAd4GLq+rfjTsfdZfkAOCAqroxyTOBG4CTFuu/Pa84FhaH\nXlnAquoLwI5x56H+quqeqrqxrT8E3M4iHr3CwrGwOPSKNGZJVgAvB64bbybjY+FYWGYcekXS6CR5\nBvDXwLuq6jvjzmdcLBwLy4xDr0gajSRPYVA0PlpVnxh3PuNk4VhYHHpFGoMkAS4Ebq+qD4w7n3Gz\ncCwgVfUoMDH0yu3AZQ69snAk+Rjwj8CLkmxLctq4c1JnRwO/ArwmyU3tc+K4kxoXu+NKknrxikOS\n1IuFQ5LUi4VDktSLhUOS1IuFQ5LUi4VDktSLhUOLSpJ/6NDmXUmePuI8DpvpPYAkv5rkQ7N83lk/\nphYfC4cWlap6ZYdm7wJ6FY425H0fhwGL9gUyLWwWDi0qSb7blj+f5Joklyf5epKPZuCdwI8BVye5\nurU9Nsk/JrkxycfbQHck+WaSs5N8ETg5yQuSfC7JDUn+d5KfbO1OTvK1JDcn+UIbLuZc4JfbG8i/\n3CHvZUn+Osn17XN0kr1aDkuG2m1Nsv9k7Wf9P6YWrX3GnYA0Ri8HXsJgoMhrgaOr6vwk7wZeXVXf\nSvJc4LeA11bV95K8B3g3g//hB/h+Vf0sQJJNwNuqakuSI4EPA68BzgaOq6r/m2RJVf0gydnAqqp6\ne8dc/wT4YFV9Mcly4KqqenGSK4BfBD7SzvnNqro3yV/t2h548R7+95IAC4cWty9X1TaAJDcBK4Av\n7tLmKOBQ4NrBOHfsy2C8qQmXtv2fAbwS+HhrB/DUtrwW+IsklwG7O6rqa4FDh479rDYT3aUMCtNH\nGAx6eekM7aU9ZuHQYvbI0PpjTP7vIcDGqnrTFMf4XlvuBTxQVYft2qCq3tauBl4H3JTkCW062At4\nRVX9v8cll/wj8MIky4CTgN+Zof1unFp6PJ9xSE/0EDDx/86/BByd5IUASZ6e5Cd23aFN6vPPSU5u\n7ZLkZW39BVV1XVWdDXyLwZwqw+fo4m8ZjIxMO+Zh7bwFfBL4AIMhv789XXtpNlg4pCdaB/xNkqur\najvwq8DHktzCoJD85BT7vRk4LcnNwK3snA/+D5N8NcnXgC8ANwNXM7iV1OnhOPBOYFWSW5LcBrxt\n6LtLgf/EzttUM7WX9ojDqkuSevGKQ5LUiw/HpTFLcipwxi7ha6vq9HHkI83EW1WSpF68VSVJ6sXC\nIUnqxcIhSerFwiFJ6sXCIUnq5f8DilikQAJOXyMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#查看样本分布，不均衡\n",
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#数据准备\n",
    "y_train = train['interest_level']\n",
    "\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param['num_class'] = 3\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "    print(\"n_estimators:\",cvresult.shape[0])\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 初步确定弱学习器数目"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "n_estimators: 105\n"
     ]
    }
   ],
   "source": [
    "#params = {\"objective\": \"multi:softprob\", \"eval_metric\":\"mlogloss\", \"num_class\": 3}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[30:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(50,cvresult.shape[0]+50)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "#厚度：标准差\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一轮最佳n_estimators=105"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 对树的最大深度（可选）和min_children_weight进行调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': range(3, 10, 2), 'min_child_weight': range(1, 6, 2)}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.62568, std: 0.00718, params: {'max_depth': 3, 'min_child_weight': 1},\n",
       "  mean: -0.62505, std: 0.00713, params: {'max_depth': 3, 'min_child_weight': 3},\n",
       "  mean: -0.62486, std: 0.00641, params: {'max_depth': 3, 'min_child_weight': 5},\n",
       "  mean: -0.62208, std: 0.00605, params: {'max_depth': 5, 'min_child_weight': 1},\n",
       "  mean: -0.62201, std: 0.00563, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.61947, std: 0.00678, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.62786, std: 0.01163, params: {'max_depth': 7, 'min_child_weight': 1},\n",
       "  mean: -0.62575, std: 0.00607, params: {'max_depth': 7, 'min_child_weight': 3},\n",
       "  mean: -0.62459, std: 0.00791, params: {'max_depth': 7, 'min_child_weight': 5},\n",
       "  mean: -0.64110, std: 0.00860, params: {'max_depth': 9, 'min_child_weight': 1},\n",
       "  mean: -0.63488, std: 0.01022, params: {'max_depth': 9, 'min_child_weight': 3},\n",
       "  mean: -0.63540, std: 0.00892, params: {'max_depth': 9, 'min_child_weight': 5}],\n",
       " {'max_depth': 5, 'min_child_weight': 5},\n",
       " -0.61946912269801835)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=105,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_1 = GridSearchCV(xgb2_1, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_1.grid_scores_, gsearch2_1.best_params_,     gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 13.19644952,  14.64061141,  14.2767292 ,  24.6805881 ,\n",
       "         25.8186645 ,  26.09132323,  33.45771718,  32.05633702,\n",
       "         39.6950428 ,  60.34690232,  44.55651889,  40.79916139]),\n",
       " 'mean_score_time': array([ 0.06711383,  0.05208559,  0.04715014,  0.08222919,  0.10505595,\n",
       "         0.08543162,  0.12552891,  0.1075408 ,  0.13865757,  0.21903582,\n",
       "         0.16447506,  0.15696263]),\n",
       " 'mean_test_score': array([-0.62567778, -0.62505259, -0.62485858, -0.62207738, -0.62201425,\n",
       "        -0.61946912, -0.62785733, -0.62574929, -0.62459451, -0.64110467,\n",
       "        -0.63487571, -0.63539631]),\n",
       " 'mean_train_score': array([-0.57303393, -0.57478751, -0.57661262, -0.47224002, -0.48432664,\n",
       "        -0.49519025, -0.34737016, -0.38608705, -0.41292892, -0.2512803 ,\n",
       "        -0.314188  , -0.35734179]),\n",
       " 'param_max_depth': masked_array(data = [3 3 3 5 5 5 7 7 7 9 9 9],\n",
       "              mask = [False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_min_child_weight': masked_array(data = [1 3 5 1 3 5 1 3 5 1 3 5],\n",
       "              mask = [False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'max_depth': 3, 'min_child_weight': 1},\n",
       "  {'max_depth': 3, 'min_child_weight': 3},\n",
       "  {'max_depth': 3, 'min_child_weight': 5},\n",
       "  {'max_depth': 5, 'min_child_weight': 1},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 5},\n",
       "  {'max_depth': 7, 'min_child_weight': 1},\n",
       "  {'max_depth': 7, 'min_child_weight': 3},\n",
       "  {'max_depth': 7, 'min_child_weight': 5},\n",
       "  {'max_depth': 9, 'min_child_weight': 1},\n",
       "  {'max_depth': 9, 'min_child_weight': 3},\n",
       "  {'max_depth': 9, 'min_child_weight': 5}],\n",
       " 'rank_test_score': array([ 7,  6,  5,  3,  2,  1,  9,  8,  4, 12, 10, 11], dtype=int32),\n",
       " 'split0_test_score': array([-0.6215785 , -0.62149823, -0.62061931, -0.61920709, -0.61731669,\n",
       "        -0.61420279, -0.61481103, -0.62240852, -0.61900105, -0.64031514,\n",
       "        -0.63113204, -0.63140636]),\n",
       " 'split0_train_score': array([-0.57323351, -0.57545261, -0.5769845 , -0.47179005, -0.48246404,\n",
       "        -0.49545426, -0.34807918, -0.38626652, -0.41214766, -0.24992405,\n",
       "        -0.31274444, -0.35596898]),\n",
       " 'split1_test_score': array([-0.6223977 , -0.62165543, -0.62292496, -0.61617513, -0.61749933,\n",
       "        -0.61441916, -0.62563536, -0.6263011 , -0.6227321 , -0.64012306,\n",
       "        -0.62482226, -0.62889011]),\n",
       " 'split1_train_score': array([-0.57687207, -0.57827932, -0.5789865 , -0.4736751 , -0.48459833,\n",
       "        -0.49696721, -0.34412773, -0.38577208, -0.41346631, -0.25419623,\n",
       "        -0.31551528, -0.35697858]),\n",
       " 'split2_test_score': array([-0.62705659, -0.62591092, -0.62292059, -0.62056635, -0.62088442,\n",
       "        -0.61748273, -0.61737125, -0.61693529, -0.61541315, -0.62721559,\n",
       "        -0.62650112, -0.62740492]),\n",
       " 'split2_train_score': array([-0.57475405, -0.57647135, -0.5779141 , -0.4732638 , -0.48622888,\n",
       "        -0.49558518, -0.35060584, -0.38620575, -0.41582133, -0.25369647,\n",
       "        -0.31726556, -0.35974373]),\n",
       " 'split3_test_score': array([-0.63893934, -0.63835939, -0.63748768, -0.63372328, -0.63272595,\n",
       "        -0.63257733, -0.64616069, -0.6352624 , -0.63818298, -0.65405123,\n",
       "        -0.65270757, -0.651891  ]),\n",
       " 'split3_train_score': array([-0.56943925, -0.57071774, -0.57314557, -0.46849968, -0.48274872,\n",
       "        -0.49251454, -0.34415997, -0.38440437, -0.40931652, -0.24879204,\n",
       "        -0.309679  , -0.35298043]),\n",
       " 'split4_test_score': array([-0.6184262 , -0.61784771, -0.62034865, -0.62072527, -0.62165642,\n",
       "        -0.61867656, -0.63533012, -0.6278436 , -0.62765352, -0.6438205 ,\n",
       "        -0.63923121, -0.63740168]),\n",
       " 'split4_train_score': array([-0.57087078, -0.57301653, -0.57603243, -0.47397146, -0.48559321,\n",
       "        -0.49543006, -0.34987806, -0.38778654, -0.41389278, -0.2497927 ,\n",
       "        -0.31573574, -0.36103725]),\n",
       " 'std_fit_time': array([ 0.65305762,  0.08705064,  0.34586559,  0.60967905,  0.24994196,\n",
       "         0.31007136,  1.79823216,  1.40586431,  2.1944837 ,  2.89322703,\n",
       "         3.65213468,  2.89815928]),\n",
       " 'std_score_time': array([ 0.0072251 ,  0.01055264,  0.0038502 ,  0.00518288,  0.0223333 ,\n",
       "         0.01287355,  0.0333423 ,  0.01603081,  0.02247593,  0.06926904,\n",
       "         0.05135788,  0.06854607]),\n",
       " 'std_test_score': array([ 0.00718089,  0.00712454,  0.00640668,  0.00604598,  0.00563153,\n",
       "         0.00677625,  0.01162651,  0.00606568,  0.00791139,  0.00859418,\n",
       "         0.0102179 ,  0.00892274]),\n",
       " 'std_train_score': array([ 0.00265823,  0.00265216,  0.0019912 ,  0.00201485,  0.00150038,\n",
       "         0.00145604,  0.00275973,  0.00108307,  0.00215609,  0.0022174 ,\n",
       "         0.0026849 ,  0.00284478])}"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.619469 using {'max_depth': 5, 'min_child_weight': 5}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_1.best_score_, gsearch2_1.best_params_))\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    pyplot.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [4, 5, 6], 'min_child_weight': [3, 4, 5]}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =3.6\n",
    "max_depth = [4,5,6]\n",
    "min_child_weight = [3,4,5]\n",
    "param_test2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.62122, std: 0.00718, params: {'max_depth': 4, 'min_child_weight': 3},\n",
       "  mean: -0.62024, std: 0.00676, params: {'max_depth': 4, 'min_child_weight': 4},\n",
       "  mean: -0.61959, std: 0.00581, params: {'max_depth': 4, 'min_child_weight': 5},\n",
       "  mean: -0.62201, std: 0.00563, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.62001, std: 0.00678, params: {'max_depth': 5, 'min_child_weight': 4},\n",
       "  mean: -0.61947, std: 0.00678, params: {'max_depth': 5, 'min_child_weight': 5},\n",
       "  mean: -0.62178, std: 0.00998, params: {'max_depth': 6, 'min_child_weight': 3},\n",
       "  mean: -0.61943, std: 0.01021, params: {'max_depth': 6, 'min_child_weight': 4},\n",
       "  mean: -0.62244, std: 0.00761, params: {'max_depth': 6, 'min_child_weight': 5}],\n",
       " {'max_depth': 6, 'min_child_weight': 4},\n",
       " -0.61942928904998118)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=105,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=5,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_2 = GridSearchCV(xgb2_2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_2.grid_scores_, gsearch2_2.best_params_,     gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 19.51124864,  21.58535542,  18.86238813,  22.9808794 ,\n",
       "         26.26035337,  30.80605431,  37.84462729,  40.35767579,  36.88097277]),\n",
       " 'mean_score_time': array([ 0.0949719 ,  0.06300769,  0.06397905,  0.09200521,  0.09144516,\n",
       "         0.11038213,  0.15127978,  0.14118648,  0.13251386]),\n",
       " 'mean_test_score': array([-0.62122112, -0.62023557, -0.61959196, -0.62201425, -0.62001045,\n",
       "        -0.61946912, -0.62177692, -0.61942929, -0.62243646]),\n",
       " 'mean_train_score': array([-0.53109615, -0.5341074 , -0.53690983, -0.48432664, -0.49134018,\n",
       "        -0.49519025, -0.43539521, -0.4446127 , -0.45301174]),\n",
       " 'param_max_depth': masked_array(data = [4 4 4 5 5 5 6 6 6],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_min_child_weight': masked_array(data = [3 4 5 3 4 5 3 4 5],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'max_depth': 4, 'min_child_weight': 3},\n",
       "  {'max_depth': 4, 'min_child_weight': 4},\n",
       "  {'max_depth': 4, 'min_child_weight': 5},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 4},\n",
       "  {'max_depth': 5, 'min_child_weight': 5},\n",
       "  {'max_depth': 6, 'min_child_weight': 3},\n",
       "  {'max_depth': 6, 'min_child_weight': 4},\n",
       "  {'max_depth': 6, 'min_child_weight': 5}],\n",
       " 'rank_test_score': array([6, 5, 3, 8, 4, 2, 7, 1, 9], dtype=int32),\n",
       " 'split0_test_score': array([-0.6178901 , -0.62014691, -0.61491706, -0.61731669, -0.61331689,\n",
       "        -0.61420279, -0.6222698 , -0.61629622, -0.6191989 ]),\n",
       " 'split0_train_score': array([-0.53163361, -0.53501853, -0.53763309, -0.48246404, -0.49181355,\n",
       "        -0.49545426, -0.43406703, -0.4439081 , -0.4537064 ]),\n",
       " 'split1_test_score': array([-0.61659146, -0.61468571, -0.61735252, -0.61749933, -0.61563369,\n",
       "        -0.61441916, -0.61264579, -0.61491855, -0.61904145]),\n",
       " 'split1_train_score': array([-0.53398703, -0.53724466, -0.54084866, -0.48459833, -0.49139589,\n",
       "        -0.49696721, -0.43668661, -0.44639851, -0.45276297]),\n",
       " 'split2_test_score': array([-0.61638922, -0.61719127, -0.61538039, -0.62088442, -0.62050927,\n",
       "        -0.61748273, -0.61763612, -0.61463916, -0.6197047 ]),\n",
       " 'split2_train_score': array([-0.53226123, -0.53551331, -0.53745573, -0.48622888, -0.49419387,\n",
       "        -0.49558518, -0.43773093, -0.44622694, -0.45096702]),\n",
       " 'split3_test_score': array([-0.63536475, -0.6332559 , -0.63074367, -0.63272595, -0.63271195,\n",
       "        -0.63257733, -0.64072875, -0.63962374, -0.63752093]),\n",
       " 'split3_train_score': array([-0.52701851, -0.52874461, -0.5313715 , -0.48274872, -0.48805903,\n",
       "        -0.49251454, -0.43359198, -0.44236441, -0.45371495]),\n",
       " 'split4_test_score': array([-0.61987969, -0.61590374, -0.61957542, -0.62165642, -0.61789487,\n",
       "        -0.61867656, -0.61561251, -0.611678  , -0.61672458]),\n",
       " 'split4_train_score': array([-0.53058035, -0.53401591, -0.53724019, -0.48559321, -0.49123855,\n",
       "        -0.49543006, -0.43489947, -0.44416553, -0.45390735]),\n",
       " 'std_fit_time': array([ 1.32410464,  0.53372752,  1.6583391 ,  1.00503023,  1.35630758,\n",
       "         1.41449142,  0.46564651,  1.25108346,  6.62856339]),\n",
       " 'std_score_time': array([ 0.02139267,  0.00678229,  0.00694713,  0.02256078,  0.03311614,\n",
       "         0.00805991,  0.03575454,  0.02166196,  0.04576648]),\n",
       " 'std_test_score': array([ 0.00717813,  0.00675703,  0.00581242,  0.00563153,  0.00678209,\n",
       "         0.00677625,  0.00997771,  0.01020569,  0.00760946]),\n",
       " 'std_train_score': array([ 0.00231934,  0.00287809,  0.00306978,  0.00150038,  0.00195689,\n",
       "         0.00145604,  0.00157383,  0.00151961,  0.00109745])}"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_2.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.619429 using {'max_depth': 6, 'min_child_weight': 4}\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaEAAAELCAYAAABwLzlKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xdc1dX/wPHXYasoeykgDnArKi5U\n3COzXaaW4U7T7OsoR/60bFmmZsM0t2WOtmnlzJG4A/dWBFyAA1H2vef3x+eiWJgI9/JhnOfj4QO8\nn889n/d9WLz5nPP+vI+QUqIoiqIoerDSOwBFURSl9FJJSFEURdGNSkKKoiiKblQSUhRFUXSjkpCi\nKIqiG5WEFEVRFN2oJKQoiqLoRiUhRVEURTcqCSmKoii6sdE7gKLO3d1dBgQE6B2GoihKsbF///5E\nKaVHXs5VSegBAgIC2Ldvn95hKIqiFBtCiPN5PVdNxymKoii6UUlIURRF0Y1KQoqiKIpuVBJSFEVR\ndKOSkKIoiqIblYQURVEU3agkpCiKouhGJSFFKYZOXDvB2Rtn9Q5DUQpMJSFFKWYiLkTQe21vXvrj\nJS7euqh3OIpSILokISGEqxBigxDilOmry33O8xdCrBdCHBNCHBVCBJheHy6EOC2EkEII9xznuwgh\nfhJCHBRC7BFC1M1xLFoIcUgIESWEUC0QlGJp58WdjPhzBP4V/DEYDYzaMooMQ4beYSlKvul1JzQO\n2CSlDAQ2mf6em6XANCllLaApEG96fQfQEfhna4gJQJSUsj7wEjDrH8fbSSmDpZQhZvgMilKo9lza\nw4jNWgJa2GUh77Z6lyNXj/Dhng/1Dk0pCQxZcDEKds2BVeHw9VOFclm9esc9AbQ1fb8E2AKMzXmC\nEKI2YCOl3AAgpbyVfUxKGWk655/j1gY+MJ1zXAgRIITwklJeMf9HUJTCs/fyXoZvHo5veV/md56P\ni4MLHfw70K9OPxYdWUSwZzCPVXtM7zCV4iT9FlzYBzG7tD9xeyHD9GPWyQ8qh4LRCFaWvVfRKwl5\nSSkvAUgpLwkhPHM5Jwi4IYT4EagCbATGSSkN/zHuAeBp4C8hRFOgMuALXAEksF4IIYG5UsqvzPdx\nFMVy/r7yN8M2DcOnnA/zOs/D1cH1zrERjUZwMPEgU3ZOoaZrTQJdAnWMVCnSkq9ArCnhxOyESwdB\nGgABXnWhQS/wb679cfIttLAsloSEEBsB71wOvZnHIWyA1kBDIAZYCfQFFvzHe6YCs4QQUcAhIBLI\nMh1rKaW8aEp4G4QQx6WU2+4T+2BgMIC/v38ew1UU84uKj2LoxqF4lfViQZcFuJdxv+e4jZUN08Km\n8dyvzzFqyyiWP7ocRztHnaJVigwpIfGUlmyyk871c9oxGweoFAKtRoJ/C/BrAg5OuoUqpJSFf1Eh\nTgBtTXdBPsAWKWWNf5zTHJgqpWxr+nsfoLmUcliOc6KBECllYi7XEMA5oL6U8uY/jr0F3JJSfvyg\nWENCQqTaykHRw8GEgwzeMBj3Mu4s7LIQz7K5TRho9l7ey6D1g2jv357pbabnNlWtlGRZGXApypR0\ndmtfU69px8q6acnGv7n21bs+2NhZNBwhxP68rr3rNR23GghHu3MJB37J5Zy9gIsQwkNKmQC0B/4z\nGwghnIEUKWUGMBDYJqW8KYQoB1hJKZNN33cGppjv4yiKeR1OPMzLG17G1cGVBZ0X/GcCAmji3YQR\njUYwc/9Mvjn2DX1q9ymkSBVdpN7Q1nCy73Qu7IesNO2YazWo0Q38m2lJx606FOFfSvRKQlOBVUKI\nAWhTbc8BCCFCgCFSyoFSSoMQYgywyXRXsx+YZzpvBPAG2nTfQSHEb1LKgUAtYKkQwgAcBQaYrucF\n/GT67dAG+FZK+UchfVZFeShHrx5l8IbBONk7sbDLQrzKeeXpff3q9CMqPooZ+2ZQ170uDT0bWjhS\npdDciL07rRazC+KPAhKENfg0gJABd9dzHP/7F5aiRpfpuOJETccphen4teMMWDcAR1tHFnVdREXH\nig/1/psZN+m5pifpWemsemwVbmXcLBSpYjFGA8Qfy7GeswtuxmnH7BzBr6lpLacZ+IaAXTl9483F\nw0zHqST0ACoJKYXlxLUTDFw/kDI2ZVjYZSG+5fNXoXT82nFe/O1Fgj2DmdtxLtZW1maOVDGrzFRt\nOi076cTugXTTMnZ5n7trOf7NwbMOWFtuAislI4tdZ6+y7WQiibfS+bx3o3yNUxzWhBRFyeHU9VMM\nWj8Ie2t7FnRekO8EBFDTtSZvNnuTSRGT+CLqC0Y0GmHGSJUCu51oSjamu5yLUWDM1I551IK6z9xN\nOs7+Fl3PkVJy/HIy204msPVkAvuir5NhMOJga0VoNXeyDEZsrEvmc0KKopicuXGGgesHYmtly8Iu\nC/Gr4FfgMZ8KfIqohCjmHZpHsGcwYb5hZohUeWhSwrWz967nXD2lHbO2g0qNIXQ4+DXXptnKuv73\neGZw7XYG208lsO1kIttPJRCfnA5ADa/yhIdWJizIgyYBrjjYFs4dtEpCiqKjs0lnGbBuAFbCigVd\nFuBfwXzPpY1vOp6jV48yfvt4Vj22ikqOlcw2tnIfhky4fDBH0tkNt03dxhyctbubhi9odzo+wWDr\nYPGQsgxGImNvsO1kAttOJnDwQhJSglMZW1oHuhMW5EFYoAfeTpaPJTdqTegB1JqQYinRSdH0X9cf\nozSysOtCqjpVNfs1YpNjef7X5/Gr4MfSR5Zib21v9muUamk3tVLpWNOzOXH7IDNFO+Zc+d7nc9yD\nLN4CJ1vstRS2ndKSTsTpqySnZ2EloKG/C2GBHoQFuVPf1xlrK8tM9ak1IUUp4mJuxjBg3QAM0sDC\nLpZJQAB+5f14r9V7jPhzBFP3TGVyi8kWuU6pcfPSvV0IrhwGaQRhBd71oNFLWtWaf3Oo8HCVjQWR\nkpHF7rPX2HoygW2nEjibcBuAik4OdG/gQ1igB6HV3XEqY1toMeWVSkKKUshib8bSf11/Mo2ZLOiy\ngGrO1Sx6vXb+7ehftz8LDy+koWdDHq/2uEWvV2IYjZB44t4uBDdMjftty2rl0WGvawnHtwnYly+0\n0KSUnLhyt6Bg7zmtoMDexormVd14oVll2gS5U83Dsch3z1BJSFEKUVxyHP3X9yfNkMaCzgsKreHo\nqw1f5VDiId7Z+Q41XWsS5BJUKNctVrLS4WLkvc/npN3QjpXz1JJNsyHaV+96YF24dxXXb2ew/XQi\n204msP1UAlduagUFQV6OvNRCKyhoWqXwCgrMRa0JPYBaE1LM5eKti/Rf15/kjGTmd55PLbdahXr9\nxNREevzag7K2ZVn+6HLK2xXeb+5FUso17Zmc7KRzMRIM2g923ALvfT7HtWqht77JMhiJMhUUbD2V\nyMG4G3cKCloFutMm0IPWQe74OJUp1LjyQj2sakYqCSnmcPn2Zfr+0ZebGTeZ13keddzq6BLH/iv7\nGbBuAO382jGj7YwiP1VjNlJqU2nZ02oxuyDhmHbMyhYqBt9NOn7NoJz7f49nIXHXU9h2Urvb2XEm\nkeQ0raAg2M9Zq2IL8qCBBQsKzEUVJihKEXLl9hX6r+tPUnqSrgkIoLFXY/7X6H9M3z+dpUeXEl4n\nXLdYLMpo0IoGcj6fk3xJO2ZfQUs09UwPhVZsBHZldQkzNcPArnNX75RPnzEVFPg4OdCtrg9tanjQ\nspo7TmWLXkGBuagkpCgWFJ8Sz4D1A7iWdo2vOn1FXfe6eodEeJ1wohKimLl/JvXc69HIK3+tWYqU\njNtaeXR20onbBxnJ2rEKvlC55d07Hc9aoFMrIyklJ6/culNQsCf6GhlZWkFBs6pu9GrqT5sgD6p7\nFv2CAnNR03EPoKbjlPxKTE2k3x/9iE+JZ26nuQR7Busd0h3JGcn0XNOT1KxUVj226l+b5RV5t+Lv\nFg/E7IRLB3LsElrn3qk154J3oCiI67cz+OtOQUEil29qWy4EejremWJrVgwLCv6LWhMyI5WElPxI\nTE1kwLoBXLp9iTkd5xTJu40T107w4m8vUt+jPnM7zcXGqohOjEgJV0/fW7V27Yx2LHuX0Oy9c3yb\nQBlnXcPNMhg5EHeDraa1nQOmgoIKDjZaQUGQB60DPajoXPQKCsxFrQkpio6upV1j0PpBXLp9idkd\nZhfJBARQw7UGE5tPZOKOiXwR9QWvNXpN75A0WRnanU1sjjudlKvasTKuWrJp3NfU+qaBxXcJzYuL\nN1LvTLHtOJ3ITVNBQQM/Z0a0DzQVFDhZvBlocaSSkKKY0fW06wxcP5C45Di+6PAFId55+mVQN09U\nf4LI+EjmH5pPA48GtPVrW/hBpCVBbM5dQvfl2CW0KgR11abX/JqDe2CR2CU0LdNwZ8uDbacSOB1/\nCwDvCg50retNWJAHraq741xW/wRZ1KnpuAdQ03FKXiWlJzFg3QCib0bzeYfPae7TXO+Q8iTdkE6f\n3/oQdyuOld1X4lfewmsoSXH3Nvi8cpi7u4TWv/tsjl9zKJ+3XWUtTUrJqfi7BQW7z2kFBXY2VjSr\n4kob09pOYCkqKPgvak3IjFQSUvIiKT2JQesHcebGGT5r/xmhlUL1DumhxCXH0WNND3wdffm629fm\na3RqNGrP4+Rcz0mK1Y7ZOWprONlJp1JjsHc0z3XN4EbKvQUFl5K0u7Pqno53moA2q+JGGbuSU1Bg\nLioJmZFKQsqD3My4yeD1gzl5/SSz2s2itW9rvUPKl62xWxm+eTjPBD7DW6Fv5W+QzFS48Pc/dglN\n0o45ekPlFtodjn9z8Kpr0V1CH5ZWUJCkPbNzKoEDsTcwSijvYEOr6qaCgiAPKpXgggJzUYUJilJI\nkjOSGbJhCCeun+CTtp8U2wQE0MavDQPrDWT+ofkEewbzZPUnH/ym21fvbmOQ3frmzi6hNaHuUzl2\nCa1cJNZzcsouKNh2KoG/TmkFBUJAA19nhrcPpE2QOw18nVVBgQWpJKQo+XQ78zZDNw7l2NVjzGg7\ngzZ+bfQOqcCGBQ/jYMJB3t31LrVca1HDtcbdg1LC9XP3diFIPKkds7bTOg+0GGZ6Pqdwdgl9WGmZ\nBnafu3anQ8EpU0GBVwV7utS5W1DgUk4VFBQWNR33AGo6TslNSmYKQzYO4WDCQaa3mU6Hyh30Dsls\nshudlrFxYEXjCZS/ePBuufStK9pJDs53983xbwEVGxbKLqEPS0rJ6fhbbM3uUHDuGuk5Cgq0tR0P\ngrxUQYE5qek4RbGglMwUXtn0CgcTDvJR2EclJwGlJ0PcPtxjdvFxqg39ZQwT14bzSXwiwtkfqrbN\nsUtojULbJfRhJaVk3iko2HYq4U5BQTWPcvRu5k9YkAfNVUFBkaGSkKI8hNSsVIZvHk5kfCQftv6Q\nzgGd9Q4p/25euveB0MuH7uwS2sirLiPda/GxOM6S7lPoG1JEHmTNhcEoORB3484UW1SOgoKW1dwZ\n0cGD1oHu+Lro06RU+W+6JSEhhCuwEggAooEeUsrruZznD8wH/AAJdJNSRgshlgEhQCawB3hZSpkp\ntHvqWUA3IAXoK6X82zRWODDRNPS7UsollvuESkmTlpXGq5tfZf+V/bzf6n26Vumqd0h5ZzRq6zcx\nO+8WElyP1o7ZltXKo1uPubtLqEMFXpKSA1tH88nRRdT1bVmkHry9lJTK9pOJbD2ZwF+nE0lKzUQI\nqO/rzPB21QkL8iDYTxUUFAe6rQkJIT4CrkkppwohxgEuUsqxuZy3BXhPSrlBCOEIGKWUKUKIbsDv\nptO+BbZJKb80vf4qWhJqBsySUjYzJb19aIlLAvuBxrklvpzUmpAC2gOdr256lV2XdvFeq/d4rNpj\neof037LS4WJUjlLpXZBq+k+9nMe9G7Z517/vLqG3Mm7Rc21Pbmfe5rvHvtOt0WlapoE92QUFpxI4\neUUrKPAsb3+nCWir6u64qoKCIqG4rAk9AbQ1fb8E2ALck4SEELUBGynlBgAp5a3sY1LK33Kctwfw\nzTHuUqll111CCGchhI/pWhuklNdM79kAdAWWm/uDKSVLuiGd1/58jV2XdjGl5ZSimYBSr+fYJXQ3\nXNh/7y6hNbvfTTwPsUuoo50jM9rO4IW1L/D61teZ13leoTQ6lVJyJuEWW013O7vPXtUKCqytaFLF\nhWcb+xIW5EENr/KqoKCY0zMJeUkpLwFIKS8JITxzOScIuCGE+BGoAmwExkkpDdknCCFsgT5A9qR1\nJSA2xxhxptfu97qi3FeGIYNRW0ax48IO3g59O2/PzhSG21fhzKa7dzrxR7XXrWzAJxiaDrq7lYGj\nR4EuFeQSxKQWk5jw1wQ+i/yMkY1HmuED/FtSaiY7sgsKTiZw0VRQUNWj3J19dppVdaWsnVrKLkks\n+q8phNgIeOdy6M08DmEDtAYaAjFoa0h9gQU5zpmNNhW3PfuyuYwj/+P1fxFCDAYGA/j7++cxVKWk\nyTRkMnrLaLbFbWNSi0k8Hfi03iFpYvfC8p6QkmjaJbQp1H3aoruEPlbtMSLjI1l4eCHBHsG0829X\n4DENRsnBuBt3moBGxlzXCgrsbQit7sbw9oG0DnTHz1UVFJRkFk1CUsqO9zsmhLgihPAx3QX5APG5\nnBYHREopz5re8zPQHFMSEkJMBjyAl//xnpwdGH2Bi6bX2/7j9S33ifsr4CvQ1oTu/wmVkirTmMmY\nrWPYEreFic0m8lzQc3qHpDn6C/w4GMr7QK8VUKlRoe0SOrbpWI5cPcKbf72pNTqt8PCNTi8npbHt\n1N0tD26kmAoKKjkxLEdBga0qKCg19LyvXQ2EA1NNX3/J5Zy9gIsQwkNKmQC0RysuQAgxEOgCdJBS\nGv8x7nAhxAq0woQkU6JbB7wvhHAxndcZGG+Bz6UUc5nGTMZuG8vm2M2Mbzqe52s+r3dIWreCnZ/D\n+v/Tqtd6LYdyhVskYG9tz4y2M+jxaw9GbhnJN92+wcHmvx9QTcs0sDc6u0NBIieuaFtue5S3p0NN\nL8KC3Gkd6KEKCkoxPavj3IBVgD/aVNtzUsprQogQYIiUcqDpvE7AdLTptP3AYCllhhAiCzgPmDaS\n50cp5RRTifbnaEUHKUA/KWV24uoPTDCd/56UctGD4lTVcaVLljGLcdvHsS56HW80eYM+tfvoHRIY\nsuD3N2DfAqj9JDw1B2z1a6K5LW4bwzYN46nqTzGl5ZR7jmkFBbfvVLHtOnuVtEytoCAkwOXOlgc1\nvVVBQUmmumibkUpCpYfBaGD8X+P5/dzvjAkZQ3idcL1DgvRb8H0/OLUeWv4POkwuEp0KPv37U+Yd\nmseU0Cm09+1OxGltXWfbyUQu3EgFoKp7OVP5tDvNq7qpgoJSpLiUaCtKkWEwGpi4YyK/n/udkY1H\nFo0EdPMSfNsDrhyB7jMhpL/eEQFaQUEr9xdYa7+byTve4fXzV8lK9cHR3obQam4MbVuNNkEeqqBA\nyROVhJRSzyiNTIqYxJqzaxjRcAT96xaBH/ZXjsCy57Str3uvhMBO+oZzM42tptLpv0wFBVY2j1Oh\nWgwe1VbwQbMFtKzqpwoKlIemkpBSqhmlkbci3mL1mdW8EvwKg+oP0jskOL0JVoWDfXno/wd41yv0\nENIyDeyLvm6aYkvg+OW7BQXta3rSxtShIDalBv3+6MePsdNpU31WocepFH8qCSmlllEambJzCj+d\n/okhDYYwtMFQvUOC/YthzSjwrK3dATkVzvPUUkrOJt6+86DoTlNBga21IKSyK+MeqUlYoAe1fO4t\nKHBzDGZUyCg+2vsRi44sKhp3kUqxopKQUipJKXl/9/v8cOoHBtUbxCsNXtE3IKMRNr8Df82A6h3h\nucXanZAF3UzLJOJ0IltPal0KsgsKqriX4/kQP23Lg6pulLP/7x8TL9Z6kaj4KGb9PYt67vVo4t3E\nonErJYuqjnsAVR1X8kgp+WDPByw/vpz+dfvzv0b/07dcODMNfh4KR36Exv2g28dgbf7fD41GyaEL\nSXfKp/+OuYHBKHG0t6FFNTfCgjxoE+iBv9vDFxTczrxNzzU9Sc5I5rvHvsOjbMFaBSnFmyrRNiOV\nhEoWKSUf7f2Ib459Q3jtcEaHjNY3Ad2+Cit6a12uO02B0BF5bi6aF/E309h2yrTlwakErqdkAlCv\nkhNhQe6EBXrQqLKLWQoKTl8/Te/felPbrTbzO88vlEanStGkSrQVJRdSSj7e9zHfHPuGF2u9qH8C\nunoGlj0LSRe06bc6TxV4yPQsU0GBaTvr7IICd0d72tXw1LY8CHTH3dG+wNf6p+ou1ZnUYhLjt4/n\n078/ZVTIKLNfQyl5VBJSSgUpJTP/nsnSo0vpXbM3bzR5Q98EFLMLlvfS7nrCfwX/ZvkaRkrJueyC\nglOJ7DxzldRMA7bWgsaVXRjbtSZhQe7U8q6AlZXlP2/3qt2Jio9i0ZFFNPBoUHK2PlcsRiUhpcST\nUvJZ5GcsOryI52s8z7im4/RNQId/hJ+GgJMvvPAduFV7qLcbjZK/Tifyx5HLbDuZQNx1raAgwK0s\nz4X4EhboQYtqDy4osJQ3mrzBkcQjTNwxkeou1alcobIucSjFg1oTegC1JlT8fRH1BXMOzOHZoGf5\nv+b/h5XQ6YFKKWHHJ7DxLW3bhZ7fQlnXPL89OS2T7/fH8fXO85xNvE05O2taVHOnTZA7YUEeVHYr\nZ7nYH9LFWxfpsaYHXmW9+KbbN5Sx0a/XnVL41JqQoph8eeBL5hyYw9OBT+ubgAyZsHY0/L0E6j4L\nT3wBtv/dgTrb6fhbLN0ZzQ/747idYaChvzOfPB/MI/W8sbcpnG0cHlZFx4p80OoDhm0axnu73uOd\nlu+ohqVKrlQSUkqsrw5+xeyo2TxR7Qkmt5isXwJKuwnf9dV2Qm09Btq9+cAmpAaj5M/j8SzZGc32\nU4nYWVvRvYEPfUMDqO/rXChhF1Rr39YMrj+YuQfn0tCzIc8EPaN3SEoRpJKQUiItOLSAzyI/47Gq\nj/F26Nv6JaCkC1oPuITj8Phn0Oil/z49JZNV+2L5etd5Yq6l4FXBntGdgujVzN8iFW2WNrTBUA4m\nHOT93e9Ty60Wtd1q6x2SUsSoNaEHUGtCxc/iw4uZvn863ap04/1W72NdSDuP/sulg1oX7Izb0GMJ\nVGt/31NPXE5mcUQ0P0deIDXTQNMAV8JDA+hcx6vYNwW9lnaNHr/2wMbKhpXdV+Jk76R3SIqFqTUh\npdRaemQp0/dPp2tAV95r9Z5+Cejkem0fIAdnrQmpV51/nZJlMLLx2BUWR0Sz6+w17G2seDK4Ei+F\nVqZOxZLzg9rVwZWP23xMvz/6MfGvicxqP0u/O1OlyFFJSCkxlh1bxrR90+hUuRMftP5Avyf2986H\n317Xul/3WgkVfO45fO12Biv2xrBsVwwXbqRSybkM4x6pyfMhfriU0G2ugz2DGdNkDFP3TGXh4YUM\nrDdQ75CUIkIlIaVEWHF8BVP3TKWDfwc+DPtQnwRkNMLGSRDxGQR2gWcXgr3jncOHLySxJCKa1Qcu\nkp5lJLSaG5Meq03HWl5YF8KDpHrrXbM3B+IP8FnkZ9R3r09Tn6Z6h6QUASoJKcXeqhOreG/3e7T1\na8u0sGnYWtkWfhCZqfDTy3D0F2gyCLpOBWsbMg1G/jh8mSUR0ew7f50yttY829iX8NAAgrws2yW7\nqBFC8FboWxy/fpzXt73Od499h2dZT73DUnSmChMeQBUmFG0/nvqRyRGTCfMNY2bbmdhZ6zCddTsR\nlveEuH3Q5T1o/goJtzJYvieGZbvPc+VmOv6uZXmpRWWeC/HDqYwOSbIIOXPjDL3W9qKWay3md5mv\nzy8NikWpwgSlVPj59M+8FfEWrSq10i8BJZ7SmpAmX4HnvybKsTVLVh1g7cFLZBiMhAV58MHTlWkb\n5FkovduKg2rO1XirxVuM3T6WWftnMabJGL1DUnSkkpBSLP165lcm7ZhEi4ot+KTdJ/okoOgdsKI3\n0sqGrS0WMnOzEwdid+Bob0PvZv70aVGZah6ODx6nFOpWtRuR8ZEsObqEYM9gOlbuqHdIik5UElKK\nnbVn1zJxx0Sa+jRlVrtZ2Fvr8BDnwe+Qv7zCNbuK9E9/nQMbJFU9Mnn78To83agS5R3UFNODvN7k\ndY5cNTU6da5OgFOA3iEpOlDF+kqx8se5P5jw1wRCvEL4rP1nONjkrf+auUijkQu/vA0/DmR3ZnXa\n35iAu18NlvZvysaRbQgPDVAJKI/srO2Y3mY6tla2jNo6itSsVL1DUnSgSxISQrgKITYIIU6Zvrrc\n5zx/IcR6IcQxIcRRIUSA6fVlQogTQojDQoiFQghb0+tCCPGpEOK0EOKgEKJRjrEMQogo05/VhfE5\nFfNaF72OcdvH0dCzIZ+1/6xQOzOnZRr4bs9ZNkx9jkqRM1hNGJtD5rB6THcW9G1CWJCHWvPJBx9H\nH6a2nsrp66d5d9e7qEKp0kevO6FxwCYpZSCwyfT33CwFpkkpawFNgXjT68uAmkA9oAyQ/eTbI0Cg\n6c9g4MscY6VKKYNNfx4354dRLG/j+Y2M3TaW+h71md1hNmVtyxbKdS/cSOXDP47T6f3V+Pz6Ip0z\nNnKw+hA6jv+RCY83KFLbJxRXLSu1ZEiDIaw+s5rvT32vdzhKIdNrTegJoK3p+yXAFmBszhOEELUB\nGynlBgAp5a3sY1LK33KctwfwzTHuUqn9OrVLCOEshPCRUl6y0OdQCsHmmM28vvV16rrX5cuOX1o8\nAUkp2XX2Gksioll/9DIVSWCl40x8iEM+Ppv6DV+w6PVLo5frv8yBhAN8sPsDarvVpo7bv9scKSWT\nXndCXtmJwfQ1tyfWgoAbQogfhRCRQohpQoh7GoGZpuH6AH+YXqoExOY4Jc70GoCDEGKfEGKXEOJJ\nc34YxXK2xm5l9NbR1HarzZyOcyhna7k7j5SMLL7dHUPXT7bTa94udp27yqRGGWx1eY9KVtex6vMj\nQiUgi7C2smZq66m4lXFj9JbRJKUn6R2SUkgsdickhNgIeOdy6M08DmEDtAYaAjHASqAvsCDHObOB\nbVLK7dmXzWWc7ElmfynlRSFEVWCzEOKQlPLMfWIfjDadh7+/fx7DVcxtW9w2Rm4ZSQ2XGnzZ6Usc\n7SxT7hxzNYWvd0Wzcm8sN9OY7aRDAAAgAElEQVSyqO1TgY+eqc+TZQ9i9/MrUNYd+v4KnjUtcn1F\n4+LgwvQ20wn/I5wJf03gs/afqUanpYDFkpCU8r6F/0KIK9nTZEIIH+6u9eQUB0RKKc+a3vMz0BxT\nEhJCTAY8gJf/8R6/HH/3BS6a4sn+elYIsQUtueWahKSUXwFfgdYx4YEfVjG7HRd2MPLPkVR3rs7c\nTnOpYFfBrONLKdl+KpElEdFsPhGPlRB0retN39AAQiq7IPZ8Bd+PA58GWhPS8l5mvb6Su/oe9Xmj\nyRu8v/t9FhxawKD6g/QOSbEwvdaEVgPhwFTT119yOWcv4CKE8JBSJgDtgX0AQoiBQBegg5TS+I9x\nhwshVgDNgCRTonMBUqSU6UIId6Al8JGFPptSQDsv7uS1P1+jqnNV5nWeZ9b9Z26lZ/Hj33Esjojm\nbMJt3B3tGN6uOi80q4y3kwMYDbBuAuyaDTUehWfmgZ0qPihMPWv0JDI+ks+jPqeeRz2a+zTXOyTF\ngnTpHSeEcANWAf5oU23PSSmvCSFCgCFSyoGm8zoB09Gm2fYDg6WUGUKILOA8kGwa8kcp5RShbWL/\nOdAVSAH6SSn3CSFCgbmAEW0d7BMpZc5pvftSveMK1+5Luxm+aTj+FfxZ0HkBzg7m2cr6bMItlu48\nz/f747iVnkUDXyfCQwN4tL4P9jampcaMFPhxEBxfA81fgc7vgl77EZVyKZkp9FrbixvpN1jVfRVe\n5dSdaHHyML3jHioJme4o/KSUB/MbXHGjklDh2Xt5L8M2DaOSYyUWdFmAq4NrgcYzGiVbTsazOOI8\n204mYGsteLSeD+GhATT0/8ejabfi4dvn4VKU1gG72cu5D6oUmrM3ztJzbU9qutZkQZcFqtFpMWLW\nBqam9ZPHTedGAQlCiK1SylEFilJRcth/ZT/DNg2jYrmKzO88v0AJKCk1k+/2xfL1rvOcv5qCZ3l7\nRnYMolczPzzL59JhIf44fPuc1g37+WVQs1sBPoliLlWdqzIldAqvb3udmftn8kaTN/QOSbGAvKwJ\nOUkpb5rWYRZJKScLIUrNnZBieVHxUbyy8RW8y3kzv8t83Mq45WucU1eSWRwRzU+RF0jJMBBS2YXR\nnWvQtY43djb3qbI6uxVW9gEbe+i7Fio1yv08RRddq3QlMj6Sr49+TQOPBnQJ6KJ3SIqZ5SUJ2Zgq\n2HqQ9/JqRcmTAwkHGLJxCJ5lPVnQeQHuZdwf6v0Go2TjsSssiYgm4sxV7GyseKJBRcJDA6hb6QEF\nDVHfwupXwS0QXlgFzqocvygaEzKGw1cPM2nHJIJcgqjiVEXvkBQzyksSmgKsA/6SUu41PWdzyrJh\nKaXB4cTDDNkwBDcHN+Z3no9HWY88v/dGSgYr9sby9c7zXLiRSkUnB17vUoNeTf1xLfeAbR2khC1T\nYetUqNIGeiyFMuYpgFDMz9balultptPj1x6M2jKKZd2WFVrbJsXy1M6qD6AKEyzjyNUjDFo/CCc7\nJxZ1XYR3udyea/63oxdvsiQimp+jLpCeZaR5VVf6hgbQsZYXNtZ5eLAxK0O7+zm4AoJfgO6fgI0O\nexEpDy3iYgRDNgzh0aqP8n6r99GKYZWiyNyFCR8B7wKpaO1xGgD/k1J+U6AolVLr2NVjDF4/mAp2\nFVjYZeEDE1Cmwcj6I9qU257oazjYWvF0I1/CQytT0/shHmJNva6t/0Rvh3YTIWwMqB9kxUZoxVCG\nBg9ldtRsGno2pEeNHnqHpJhBXqbjOksp3xBCPIXWkeA54E9AJSHloZ24doJBGwZRzrYcC7oswMfR\n577nJt5KZ8WeGL7ZFcPlm2n4uZbhzW616BHih1PZhyzXvR4Ny57Tvj49D+qrH2DFUXaj06l7plLH\nrQ513FWj0+IuL0ko+//2bsBy00OlFgxJKalOXj/JwPUDcbB2YEGXBVRyrJTreQfjbrA4Ipo1By6R\nYTDSOtCdd5+sS7uanljnZ8+euP2w/HkwZEKfnyCgVQE/iaIXK2HF1FZT6bFGWx9a2X2l2R5oVvSR\nlyT0qxDiONp03CtCCA8gzbJhKSXNmRtnGLR+EHbWdizsshC/8n73HM/IMvL74UssjogmMuYG5eys\n6dnUj5daBFDdswCNS4/9Cj8MAkdP6PcDuAcW8JMoenN2cGZG2xm89PtLjP9rPF90+EI1Oi3G8lSY\nYOqUcFNKaRBClAUqSCkvWzy6IkAVJhTc2aSz9P+jP1bCioVdFhLgFHDnWPzNNJbtjuHbPTEkJKdT\nxb0cL7WozDONfalQkG2ypdT6v617Eyo1hl4rwDHv1XdK0bfy+Ere3f0uw4OH83ID1eGiKDF3YUL2\nnj1hpmm4rcCcAkWolBrnks4xYN0AAOZ3mU+AUwBSSv6OucGSiGh+O3SJLKOkXQ0PwkMDCAs0wzbZ\nhiz4YxzsnQe1HoenvwLbwtsKXCkcPWr0IDIhki+ivqC+R31aVGyhd0hKPjzwTkgIMR9tXWiJ6aU+\ngCG7yWhJp+6E8u/8zfP0/6M/WTKLhV0WUqlcAGsOXmJJRDSHLiRR3t6G50L8eKlFZQLczdSpOv0W\n/DAATv4Boa9CxylgpaZqSqqUzBRe+O0FrqZeZdVjq/Jc6q9YllkbmAohDkgpGzzotZJKJaH8ib0Z\nS991fck0ZDK15Wx2HLVh+Z5Yrt3OINDTkZdCA3i6YSXK2ZtxN5Gbl+DbHnDlMHSbBk1Kxe9Jpd65\npHP0XNOTQJdAFnVZhK21anSqN7NOxwEGIUS17F1ITR0TDAUJUCnZ4pLj6L+uPykZaQTJ1+nzZQxS\nSjrU8qJvaACh1dzM/6DhlSOwrIf2LFCvlRDU2bzjK0VWFacqTGk5hTFbxzB9/3TGNR2nd0jKQ8hL\nEnod+FMIcRZtX5/KQD+LRqUUW2evx/LS7325mX6bW9EDSLEqy8BWfrzYvDJ+rhZqtXJmM6wKB9uy\n0P93bTdUpVTpEtCFqPgovjn2DcEewXSt0lXvkJQ8emASklJuEkIEAjXQktBxINjSgSnFS+y1FObu\n2M8vVyYirVLwvP0aEx4N44ngSpSxs+DGcH8vhTUjwb2G1oTUyddy11KKtFGNR3Eo8RCTIyYT5BpE\nVaeqeoek5EG+escJIWKklKWi5bBaE7o/KSURZ66yOCKaTadOUsb/K2ztUhgfPJMe9UMt29tLStj8\nLmz/GKp1gOcWg8NDtPBRSqTLty/T49ceuDq48u2j36pGpzp5mDWh/JYNqZYJpdjt9Cy+3nWezjO3\n8cL83eyLi8a7xmIcy6bxdbcFPN+gpWUTUFY6/DBQS0CNXoLeK1UCUgDwLufNh2EfcjbpLG/vfBvV\noLnoy29pkvqXLYWiE2+zdOd5vtsfS3JaFvUqOTH5ST++vziBxNQk5naaSz2PepYNIuUarHgBYiKg\nw2RoNVI1IVXu0aJiC4YFD+PzqM9p6NmQnjV76h2S8h/um4SEEL+Se7IRQP62vlSKHaNRsvVUAksi\notlyIgEbK0G3ej6EhwZQ2cPAgPUDSEiNZ07HOQR7Wnip8OoZrQlpUhw8uxDqPmPZ6ynF1qD6gziQ\ncIAP935IHbc6lv/lSMm3+64JCSHa/NcbpZRbLRJREVNa14SS0zL5fn8cS3ee51zibTzK29O7qT8v\nNPPHs4IDV1OvMnD9QC7cusDsDrMJ8c7T9G/+xeyGFb20taBey8G/uWWvpxR7SelJPL/meYzSyKru\nq1Sj00Jk1odVS7vSloROxyezdOd5ftgfx+0MAw39nekbGsAjdX2ws9GWEK+nXWfA+gHE3oxldsfZ\nNPFuYtmgjvwEP74MTpXghe/BrZplr6eUGEcSj9Dn9z409WnK7A6zVaPTQmLuh1WVEs5glGw+Hs+S\niGj+Op2InbUV3Rv40Dc0gPq+9/72eCPtBoPWDyLmZgyfd/jcsglIStgxCzZOBr9m0HM5lFMzwUre\n1XGvw7im43hn1zvMPTiXoQ2G6h2S8g8qCZViSSmZrNwXw9e7zhN7LRXvCg6M6RxEz6b+uDva//v8\n9CQGbxjMuaRzfNb+M5r7WHBKzJAFv42B/YugztPw5Jdg62C56ykl1nNBzxEVH8WXUV/SwL0BoZVC\n9Q5JyUGX6TghhCuwEggAooEeUsrruZznD8wH/NCKJLpJKaOFEMuAECAT2AO8LKXMFELUBBYBjYA3\npZQf5xirKzALsAbmSymn5iXWkjgdd/zyTZZERPNT5AXSMo00reJKeIsAOtfxwtY69+mKmxk3GbR+\nEKeun+LT9p/SqpIFN4ZLT4bv+sLpjVr1W/tJqgmpUiCpWan0XtubxNREvnvsO9Xo1MLM3cA0tyq5\nJGAfMFdK+dAb3AkhPgKuSSmnCiHGAS5SyrG5nLcFeE9KuUEI4QgYpZQpQohuwO+m074FtkkpvxRC\neKK1FXoSuJ6dhIQQ1sBJoBPaFuV7gV5SyqMPirWkJKEsg5ENR6+wOCKa3eeuYW9jxVMNK/FSiwBq\nV/zvZ2ySM5J5ecPLHLt2jFntZhHmG2a5QJMuwLfPQ/xR6D4DGve13LWUUiU6KZqea3tSzakai7su\nVo1OLcjca0JnAQ9guenvzwNXgCBgHtrWDg/rCaCt6fslwBbgniQkhKgN2EgpNwBIKW9lH5NS/pbj\nvD2Ar+n1eCBeCPHoP67XFDgtpTxres8KUwwPTELF3bXbGSzfE8OyXee5mJRGJecyjHukJs+H+OFS\nzu6B77+VcYshG4dw7NoxZradadkEdPmQ1oQ0PVlrwVO9o+WupZQ6AU4BTAmdwuito5m2bxoTmk3Q\nOySFvCWhhlLKnD95fhVCbJNShgkhjuTzul5SyksAUspLpjuYfwoCbgghfgSqABuBcVLKOx28c2y4\n99oDrlcJiM3x9zigWT5jLxYOX0hicUQ0qw9cJCPLSMvqbrz1eB061PLCOo+bxt3OvM3QjUM5mniU\nj9t+TFu/tpYL+NQGbQrOwQn6/wHedS13LaXU6hzQmT4Jffj66Nc09GzII1Ue0TukUi8vSchDCOEv\npYyBO+s07qZjGfd7kxBiI5DbxOubDxFba6AhEIO2htQXWJDjnNloU3HbHzBWbj917zsPKYQYDAwG\n8PcvPi3yMg1Gfj98mSUR0ew/f52ydtb0CPElvEUAgV7lH2qslMwUXtn4CocSDzGtzTQ6+HewUNTA\nvoWwdgx41Ybeq6BCRctdSyn1RjYeyeHEw1qjU5cgqjmrkn895SUJjQb+EkKcQfthXgV4RQhRjru7\nrf6LlPK+cylCiCtCCB/TXZAPEJ/LaXFAZI4ptJ+B5piSkBBiMto0YV42l49DK27I5gtc/I/YvwK+\nAm1NKA/j6yo+OY3lu2NZtvs88cnpVHYry/91r82zjX1xKvPw894pmSkM2zSMqIQoPgz7kE6VO1kg\nasBohE1vaWXYgZ21Lgj2D5csFeVh2VrZMi1sGj3W9GDUllEsf3S5anSqo7xs5fCbaSuHmpi2cshR\njPBJPq+7GggHppq+/pLLOXsBFyGEh5QyAWiPVgyBEGIg0AXoIKU05uF6e4FAIUQV4ALQE+idz9iL\njMiY6yyJiGbtoUtkGiRtgjz48JkA2gR5YJXHKbd/Ss1KZcTmEfwd/zcftPqArgEW2pclMxV+GgJH\nf4aQ/vDINLBWTwwohcOrnBcfhX3E4A2DeSviLT4M+9CyTXeV+3rg//WmdZeXgex1oS1CiLlSyswC\nXHcqsEoIMQBtqu0507VCgCFSyoFSSoMQYgywSWj/dexHK4QAmAOcB3aa/sP5UUo5RQjhjZaoKgBG\nIcT/gNpSyptCiOHAOrQS7YVSyvyuZ+kqPcvA2oOXWBIRzYG4JBztbXihWWVealGZqh6OBRo7LSuN\n1za/xp7Le3iv1Xt0q9rNTFH/w+1EWN4L4vZAp3cg9FXVhFQpdM18mvFqw1eZ9fcsgj2D6V2r2P9e\nWizlpUR7PmDL3am3PoBBSjnQwrEVCUWlRPtyUhrLdp9n+Z4YEm9lUM2jHOGhATzdyBdH+4LfQaQb\n0nntz9eIuBDBOy3f4YnqT5gh6lwknoZlz0LyJXhqLtR50jLXUZQ8MEojIzaPYMfFHSzuupgGHmpX\nXnMw93NCB6SUDR70WkmlZxKSUrLv/HUWR0Sz7vBlDFLSoaYn4aEBtKrubrbpgwxDBv/7839sv7Cd\nKaFTeCrwKbOM+y/nI2BFbxDW0GsF+Fm455yi5EF2o1ODNLCq+ypcHFz0DqnYM/dzQgYhRDUp5RnT\n4FUBwwPeoxRAWqaB1VEXWRwRzdFLN6ngYEO/lgH0aR6Av5t5F1AzDZmM3jKa7Re2M7nFZMsloEPf\nw89DwdkfXvgOXNXWy0rR4GTvxIy2M+jzWx/GbR/H7A6zsbay4Jb0yj3ykoReB/4UQpxFK0yoDPSz\naFSlVNz1FL7ZFcPKvTFcT8mkhld53n+qHk82rEhZO/Mv2mcaMxmzdQxb4rbwf83/j2eDnjX7NZAS\ntk+Hze+Afyj0XAZlXc1/HUUpgNputRnfbDxv73ybuQfn8krwK3qHVGrkpTpuk6k6rgam6jjAwruX\nlR5SSnaevcqSiGg2HL0CQOfa3oSHBtC8qqvFKnYyjZmM3TaWzbGbmdBsAj1q9DD/RQyZsGYkRH4N\n9Z6DJ74Am383RlWUouCZwGeIjI9kzoE51Peob9n+iMod+WpgKoSIkVIWn6c4C8BSa0IpGVn8FHmB\npRHnOXElGZeytvRs6s+LzStTybmM2a+XU5Yxi7HbxrL+/HrGNhnLi7VfNP9F0pJgVTic/RPC3oB2\nE1QFnFLkpWal8uJvL3Il5Qqruq+ioqN6cDo/LL6pnRAiVkrp9+Aziz9zJ6HzV2+zdOd5Vu2LJTkt\nizoVKxAeGsDjDSriYGv5eegsYxYTtk/g9+jfGRMyhvA64ea/yI1Y+LYHJJ6Ex2ZBQwskOUWxkPM3\nz9NzTU8CKgSw5JEl2Fk/uMeicq/C2NSuyHcRKEqMRslfpxNZEhHN5hPxWAtB17re9A0NoHFll0J7\nSM5gNDBxx0R+j/6dUY1HWSYBXYzSElBmqrYLarV25r+GolhQ5QqVeaflO4zcMpKP9n7ExOYT9Q6p\nRLtvErrPFg6grQup7S3zIDktkx/2x7F013nOJtzG3dGOV9tV54XmlfGqULgbtBmMBiZFTGLt2bW8\n1ug1+tW1QG3JiT/g+/5a4UGfn7VecIpSDHWs3JHw2uEsObqEhp4NebTqPxvzK+byX3dCH+fzWKl3\nOz2LaetO8P3+OG6lZ9HAz5mZzzegWz0f7G0Kv/TTKI28vfNtVp9ZzfDg4QysZ4HnjPfMg9/fAO/6\n0HsllFebhinF22uNX+NQ4iHe3vk2NVxqUN2lut4hlUi67KxanORnTcholHT5ZBt1KzkRHhpAsJ+z\nhaLLQyzSyJSdU/jh1A8MbTDU/KWnRgOs/z/Y9QUEPQLPLgC7cua9hqLoJD4lnh6/9qC8XXlWdF9B\nOVv133ZeWLwwoTTJb2FClsGIzX22yi4sUkre3fUuq06uYlC9Qbza8FXzrj9lpMCPg+D4Gmj6MnT9\nANRDfkoJs/fyXgauH0inyp2YFjZNNTrNg4dJQvr+lCzBikICen/3+6w6uYoBdQeYPwHdiocl3eH4\nWug6Fbp9pBKQUiI18W7CiIYjWBe9jm+Pf6t3OCXOQ/2kNHWpVoo4KSUf7f2IFSdW0LdOX15r9Jp5\nE1DCCZjfAa4chee/geZDzTe2ohRB/ev2p61fWz7e+zFR8VF6h1OiPOyv679ZJArFbKSUfLzvY745\n9g19avdhVONR5k1A57bDgk5aCXa/tVCru/nGVpQiSgjBe63ew7ucN2O2juFa2jW9QyoxHjYJqcnQ\nIkxKycz9M1l6dCkv1HqB10NeN28COrACvn4KHL1h4Eao1Nh8YytKEVfBrgIz2s7getp1xm4bi8Go\n+jibw8MmoXkPPkXRg5SSTyM/ZdGRRTxf43nGNhlrvgQkJWz5EH56Gfybw4B14BJgnrEVpRip5VaL\nN5u/ya5Lu/jywJd6h1MiPFTHBCnlbEsFohTMF1FfMP/QfJ4Leo4JzSaYLwFlZcCvr8GBb6FBL3js\nU7BRbUyU0uvpwKeJjI9k7sG5NPBoQGvf1nqHVKyp6rgS4MuoL5l7cC7PBD7DxOYTsRJm+mdNvQHf\nPK0loLYT4MkvVQJSFODNZm9Sw6UG4/8az4VbF/QOp1hTSaiYm3tgLrMPzObJ6k8yqcUk8yWg6+dh\nQWeI2QVPzoG2Y1UXbEUxcbBxYEbbGRiMBkZvGU2GIUPvkIotlYSKsfmH5vN51Oc8Xu1x3mrxlvkS\n0IX9Wgn2rcvQ5ycI7mWecRWlBPGv4M+7rd7lyNUjfLjnQ73DKbZUEiqmFh9ezKy/Z/Fo1UeZEjrF\nfNsRH18Lix4F2zIwYANUUfPdinI/Hfw70K9OP1adXMWvZ37VO5xiSSWhYmjpkaVM3z+dRwIe4d2W\n75ovAe36Ela8oHW/HrgJPGqYZ1xFKcFGNBpBY6/GTNk5hVPXT+kdTrGjklAxs+zYMqbtm0bnyp15\nv/X72Fjld0uoHIwG+O0N+GMc1HwUwteAo2fBx1WUUsDGyoZpYdNwtHNk1JZR3Mq4pXdIxYpKQsXI\n8uPLmbpnKh39OzI1bKp5ElDGbe3uZ89caD4MeiwFu7IFH1dRShGPsh5MC5tGbHIskyImoRpD550u\nSUgI4SqE2CCEOGX66nKf8/yFEOuFEMeEEEeFEAGm15cJIU4IIQ4LIRYKIWxNr9cUQuwUQqQLIcb8\nY6xoIcQhIUSUEMJ8+3UXklUnVvH+7vdp59eOj8I+wtbKtuCDJl+GRd3g1Dro9jF0fV81IVWUfArx\nDuG1Rq+x4fwGvjn2jd7hFBt63QmNAzZJKQOBTaa/52YpME1KWQtoCsSbXl8G1ATqAWWA7F3argEj\nuP+me+2klMF5bTFeVPxw8gfe2fUObXzbML3NdGytzZCA4o/B/I6QeBJ6Loemgwo+pqKUcn3r9KW9\nX3tm7JtBZHyk3uEUC3oloSeAJabvlwBP/vMEIURtwEZKuQFASnlLSpli+v43aQLsAXxNr8dLKfcC\nmYXwGQrFT6d+4u2db9O6UmtmtJ1hngR05k/tGSBDBvT7DWp0LfiYiqIghOCdVu/g4+jDmC1juJp6\nVe+Qijy9kpCXlPISgOlrbqvgQcANIcSPQohIIcQ0IcQ9c0Wmabg+wB95uKYE1gsh9gshBv/XiUKI\nwUKIfUKIfQkJCXn6QJaw+sxqJkdMJrRiKDPbzcTO2gzdCiK/gWXPQoVKWgVcxYYFH1NRlDsq2FVg\nZtuZJGUkMXa7anT6IBZLQkKIjaY1m3/+eSKPQ9gArYExQBOgKtD3H+fMBrZJKbfnYbyWUspGwCPA\nMCFE2P1OlFJ+JaUMkVKGeHh45DFc81pzdg0T/5pIM59mfNLuE+yt7Qs2oJSw+V34ZRgEtNKakDr7\nmSdYRVHuUcO1Bm82e5Pdl3bzRdQXeodTpJmhvCp3UsqO9zsmhLgihPCRUl4SQvhwd60npzggUkp5\n1vSen4HmwALT3ycDHsDLeYznoulrvBDiJ7Q1pm0P8ZEKze/nfufNv96kqXdTPm3/KQ42DgUbMCsd\nfhkOh1ZBwz7QfSaYY1pPUZT7eirwKaISoph3aB7BnsGE+d73995STa/puNVAuOn7cOCXXM7ZC7gI\nIbJvRdoDRwGEEAOBLkAvKaXxQRcTQpQTQpTP/h7oDBwu0CewkHXR6xi/fTyNPBvxaftPKWNTpmAD\nplzT9gA6tAra/x88/plKQIpSSMY3HU9N15qM2z6OuOQ4vcMpkvRKQlOBTkKIU0An098RQoQIIeYD\nSCkNaFNxm4QQh9A21Mvez2gO4AXsNJVcTzK931sIEQeMAiYKIeKEEBVM5/4lhDiAVsiwVkqZl3Wk\nQrXx/EbGbhtLA48GfNHhC8raFvB5nWtntQKEuL3wzAIIG6OakCpKIcpudIqEUVtGkW5I1zukIkeo\nh6r+W0hIiNy3z/KPFW2O2czoLaOp616XOZ3mUM62XMEGjN0Dy3uCNELPb6FyqHkCVRTlof0Z8ycj\n/hzBs0HPMrnFZL3DsTghxP68PgqjOiYUAVtitzB662hqu9fmy45fFjwBHf0FljwG9hVgwEaVgBRF\nZ+3829G/bn++P/k9q8+s1jucIkUlIZ1ti9vGqC2jqOlSkzkd5+Bo55j/waSEHZ/CqnDwrg8DN4J7\ndfMFqyhKvr3a8FWaeDfhnZ3vcPL6Sb3DKTJUEtLRjgs7GPnnSAJdApnbeS7l7crnfzBDFqwdDRv+\nD2o/DuGroZy7+YJVFKVAbKxs+CjsI8rblWfUllEkZyTrHVKRoJKQTnZe3MmIzSOo6lyVrzp9RQW7\nCvkfLD0ZVvSCfQug5Wvw7GJtPyBFUYoU9zLuTGszjbjkOCbtUI1OQSUhXey+tJtXN79KgFMA8zrN\nw8neKf+D3bwIix6B05u05386TQEr9c+qKEVVY6/GjGw8ko0xG1l6dKne4ejOYg+rKrnbe3kvwzcN\nx6+8H/M6z8PZwTn/g10+DN/2gLQk6L0SAjuZL1BFUSzmpdovERUfxcz9M6nnXo9GXo30Dkk36lfm\nQrT/yn6GbRpGJcdKzO88H1cH1/wPdnojLOyqlWD3+10lIEUpRoQQTGk5hUqOlRizdQyJqYl6h6Qb\nlYQKSWR8JEM3DsW7nDfzu8zHrYxb/gfbtwiW9QCXyloTUp/65gtUUZRCUd6uPDPaziA5I5mx28aS\nZczSOyRdqCRUCA4kHGDoxqF4lfViQecFuJfJZ9Wa0QgbJsOa/0G1dtodkFMl8warKEqhqeFag4nN\nJ7Ln8p5S2+hUrQlZ2KGEQwzZMAQ3Bzfmd56PR9l8duXOTIOfh8CRn6BxX+g2HazVP5+iFHdPVH+C\nyPhI5h+aTwOPBrT1a6t3SIVK/RSzoCNXj/DyhpdxtndmQZcFeJXzyt9At6/Cit4Quws6vq2VYZeg\nHnCZmZnExcWRlpamdynp8zIAAB4eSURBVChKCefg4ICvry+2tkWrie/4ZuM5evUoE7ZPYOVjK/Er\nX3q2WVG94x4gv73jjl09xsD1AylvV55FXRbh4+iTvwCuntE2oUu6AE/NgbpP52+cIuzcuXOUL18e\nNzc3RAlKrkrRIqXk6tWrJCcnU6VKFb3D+Ze45Dh6rOmBr6MvX3f7uuB7iOlI9Y7T2Y20GwzeMBhH\nW0cWdlmY/wR0fifM7wipNyD81xKZgADS0tJUAlIsTgiBm5tbkb3j9i3vywetPuDYtWN8sPsDvcMp\nNCoJWYCzgzOjGo9ifpf5VHSsmL9BDv8ASx+HMi5aDzj/ZuYNsohRCUgpDEX9v7M2fm0YVG8QP5z6\ngZ9P/6x3OIVCJSELeSrwqfzN60oJ/9/emYdXVV59+15ACNUgQgBrREQQRCADEMGACQEERSjKW2hF\noVBLtRbLJxQEW2RQ0YDIZGutIiiOWKotBcQECAawEAMmMpjKUMQ0CDGgMhkZ1vfH3oknITM5Q8i6\nr+tcZ+eZ9tpP9jnrPMNevw1zYNm9cFVnxwGFtqp6Aw3DCEhGR42m64+78sTmJ/jPkf/42xyvY04o\nkDh7Gv41BtZOhw4/heH/gEsu4IFWo1x8/fXXPPfcc5WqO2/ePE6ePHnBNqSlpTFmzJgLbiefkSNH\nsmzZsvPSs7OzGTx4MADr169nwIABxdZv0aIFX31V9Q9Qjho1il27dpVapiTb9+/fzxtvvFFsne++\n+44uXboQGRlJ+/btmTq1+mr21K5Vm5lxM2lQt0GNCHRqTihQ+O5bJwTPtiUQ+3v4v4UQVM/fVtUI\nAsEJRUdHs2DBggtupyzCwsKK/YL3FQsXLqRdu3aVqluaEwoODmbdunVkZGSQnp7O6tWr2bx584WY\n6ldCfxTK7PjZZB/PZvLGyRd1oFNzQoHAN1lOCJ59H8DAZ6H3FAtC6kMmTZrE3r17iYqKYsKECTz9\n9NPceOONREREFPyiPnHiBP379ycyMpIOHTqwdOlSFixYQHZ2Nj179qRnz54lth8SEsLEiRPp3Lkz\nt9xyC6mpqcTHx9OyZUuWL3cEzjxHJdOmTePee+8tKFOWc1qyZAkRERFERkYyfPjwgvSUlBS6detG\ny5YtCxzP/v376dChw3lt5Obm0rdvXzp27Mj9999f6pferFmzCmwaO3YsvXr1AmDt2rUMGzYMgMTE\nRGJiYujUqRNDhgzh+PHjAMTHx5O/2/Sll16iTZs2xMfH8+tf/5oHH3ywVNsnTZrEhg0biIqKYu7c\nuYVsEhFCQhwtrtOnT3P69OmAX/8pi45NOzK281jWfbGOV3a+4m9zvIY9J+RvDmY4IXi+PwH3/A2u\n6+1vi/zK9H/tZFf2t1XaZruwy5j6k/Yl5ickJLBjxw7S09NJTExk2bJlpKamoqoMHDiQlJQUcnJy\nCAsLY+XKlQB88803NGjQgDlz5pCcnEzjxiVHwThx4gTx8fHMnDmTQYMGMXnyZJKSkti1axcjRoxg\n4MCB59XJzMwkOTmZY8eOcf311/PAAw8U+2zLzp07mTFjBps2baJx48YcOXKkIO/gwYNs3LiRzMxM\nBg4cWDANVxzTp0/n5ptvZsqUKaxcuZIXXnihxLJxcXE888wzjBkzhrS0NPLy8jh9+jQbN24kNjaW\nr776iieeeII1a9Zw6aWXMnPmTObMmcOUKVMK2sjOzubxxx9n27Zt1K9fn169ehEZGVmq7QkJCcye\nPZsVK1YUtDFq1ChWrVoFwNmzZ+ncuTN79uxh9OjRdO1a/TfzDG83nPScdOZtm0eHxh2I/nG5dj1X\nK+zntj/5LBEW9YNadeBX79d4BxQIJCYmkpiYSMeOHenUqROZmZns3r2b8PBw1qxZw8SJE9mwYQMN\nGpRffqNu3brcdtttAISHh9OjRw+CgoIIDw9n//79xdbp378/wcHBNG7cmKZNm3Lo0KFiy61bt47B\ngwcXOMFGjX5YQ7zzzjupVasW7dq1K7F+PikpKQWjmP79+9OwYcMSy3bu3JmtW7dy7NgxgoODiYmJ\nIS0tjQ0bNhAbG8vmzZvZtWsX3bt3JyoqildeeYXPP/+8UBupqan06NGDRo0aERQUxJAhQwrll8f2\nsLCwAgcEULt2bdLT08nKyiI1NZUdO3aUes3VARHhsW6PcXX9q5mQMuGiDHRqIyF/kfoivPcwXNEB\n7n4bLqvks0QXGaWNWHyBqvLII49w//33n5e3detWVq1axSOPPELfvn0L/bIvjaCgoIKpoVq1ahEc\nHFxwfOZM8UEr88uA8+VaUjlVLXHaybON8qwplHf6KigoiBYtWrB48WK6detGREQEycnJ7N27lxtu\nuIG9e/fSp08f3nzzzRLbKMueitruyeWXX058fDyrV68uduqxuhFSN4Rn4p/hnpX3MOGDCbzY90Xq\n1Lp4vrptJORrzp2D9/8Iq8bDdX2cIKTmgPxK/fr1OXbM2YF06623smjRooI1jP/9738cPnyY7Oxs\nLrnkEoYNG8b48ePZtm3beXX9Qe/evXn77bfJzc0FKDQdVxHi4uJ4/fXXAXjvvfc4evRomeVnz55N\nXFwcsbGxPP/880RFRSEi3HTTTWzatIk9e/YAcPLkST777LNC9bt06cIHH3zA0aNHOXPmDH//+9/L\ntLG0vs7JyeHrr78G4NSpU6xZs4a2bduW2WZ1oU3DNkyJmULaoTSe/fhZf5tTpZgT8iWnT8HfRsC/\n/wQ3joK73oDgEH9bVeMJDQ2le/fudOjQgaSkJO6++25iYmIIDw9n8ODBHDt2jO3bt9OlSxeioqKY\nMWMGkydPBuC+++6jX79+pW5M8Cbt27fnj3/8Iz169CAyMpJx48ZVqp2pU6eSkpJCp06dSExMpHnz\n5qWWj42N5eDBg8TExHDFFVdQr149YmNjAWjSpAkvv/wyQ4cOJSIigptuuonMzMxC9a+66ir+8Ic/\n0LVrV2655RbatWtX5hRnREQEderUITIykrlz55Kdnc3tt98OOGtIPXv2JCIightvvJE+ffqUuP28\nuvKTVj9hSJshLNqxiHUH1vnbnCrDYseVQWVjx53H8Rx4ayhkpUHfJyBm9EUVhPRC+PTTT7nhhhv8\nbYbhY44fP05ISAhnzpxh0KBB3HvvvQwaNMjr563O91ve2Tx+8d4v+OLbL1g6YClXXxaYgU4DPnac\niDQSkSQR2e2+F7sKKiLNRSRRRD4VkV0i0sJNf11E/iMiO0RkkYgEuen3iMgn7utDEYn0aOs2t84e\nEZnki+ssIOczWNgbvtwOP1sC3R40B2TUeKZNm0ZUVBQdOnTg2muv5c477/S3SQFPcO1g5sTPQUQY\nu34s350JzDh4FcFfq1uTgLWqmuA6hEnAxGLKLQFmqGqSiIQA59z014Fh7vEbwCjgL8B/gR6qelRE\n+gEvAF1FpDbwZ6APkAV8JCLLVbX0R7ergv0b4a17nB1wI1dCs4tvi6Xh0LVrV/Ly8gqlvfrqq4SH\nh19w27m5ufTuff7uybVr1xIaegEqvX485+zZsy+4jZrIVSFX8VTsU4xeO5ontzzJY90f87dJF4S/\nnNAdQLx7/AqwniJOSETaAXVUNQlAVY/n56nqKo9yqUAzN/1DjyY256cDXYA9qrrPrfOWa4N3nVDG\nUvjnaGjYwnkGqFHghY83qo4tW7Z4re3Q0FDS09O91n6gnNMoH3HN4rgv4j5e+OQFOjbtyKDW3p/G\n9Bb+2phwhaoeBHDfmxZTpg3wtYi8IyIfi8jT7oimAHcabjiwupj6vwLec4+vAr7wyMty04pFRO4T\nkTQRScvJySn3RRWgCh/Mgnfvg6u7wq8SzQEZhlGl/Dbyt9x05U3M2DKDzCOZZVcIULzmhERkjbtm\nU/R1RzmbqAPEAuOBG4GWwMgiZZ4DUlR1Q5Fz98RxQvmjq+IWYErckaGqL6hqtKpGN2lSCTnuU0dh\n68sQ8XMY/o4FITUMo8opCHQa3ICxyWP59vuqjTTiK7zmhFT1FlXtUMzrn8AhEbkSwH0/XEwTWcDH\nqrpPVc8A/wA65WeKyFSgCVBoT6qIRAALgTtUNdejLc9tJM2A7Kq50mK4pBGMWguD/gp1qq86omEY\ngU2jeo14psczfHniy2ob6NRf03HLgRHu8Qjgn8WU+QhoKCL5Q5FeuGs4IjIKuBUYqqr5mxUQkebA\nO8BwVf2sSFutReRaEakL3OXa4D0uu9J2wBmG4XWimkbx++jfk/xFMot3Lva3ORXGX04oAegjIrtx\ndqwlAIhItIgsBFDVszhTcWtFZDvOlNqLbv3ngSuAf4tIuojkx0+ZAoQCz7npaW5bZ4AHgfeBT4G3\nVXWnD67TqAYEgpSD6Qn9QGX0hPI5e/YsHTt2vOgeVC2Le264h1tb3Mr8bfP56MuP/G1OhfCLE1LV\nXFXtraqt3fcjbnqaqo7yKJekqhGqGq6qI1X1eze9jqq2UtUo9/WYmz5KVRt6pEd7tLVKVdu49Wb4\n+pqNwCUQnJDpCZVNeZzQ/Pnzq+2DqBeCiDC923Sa12/OhA8mkHOyEhuq/ISF7TFqPKYnVP31hACy\nsrJYuXIlo0aNOi+vJnBp0KXMjZ/LyTMnmZAygTPnig96G2hcPKFYjYuD9yY5kSWqkh+HQ7+EErNN\nT+ji0BN66KGHmDVrll8Dyvqb6xpex5SYKTyy4REWbFvAuOjKxRL0JTYSMgwPTE+oeuoJrVixgqZN\nm9K5c+dSr7MmMKDlAH5+/c9ZvHMxaz9f629zysRGQkZgUcqIxReYnlDZBKKe0KZNm1i+fDmrVq3i\nu+++49tvv2XYsGG89tpr5bqmi42Hb3yYnV/tZPKmyVzX8Dquuewaf5tUIjYSMmo8pidU/fWEnnrq\nKbKysti/fz9vvfUWvXr1qrEOCKBu7bo8E/8MtWvVZtz6cZw6c8rfJpWIOSGjxmN6QtVfT8g4n7CQ\nMBJiE9h9dDczNs8I2AdZTU+oDKpMT8gokeqs72JUHtMT8g1/Tv8zz2c8z7SYafy0zU99cs6A1xMy\nDMMwPSHf8JuI39AtrBtPbnmSXbneV6+pKLYxwTCqCNMTqhimJ+QbateqTUJsAkP+NYRx68exdMBS\nGgSXf3ent7HpuDKw6TjvU9OmRwz/UlPvt4ycDEauHsnNYTczv9d8aon3JsJsOs4wDMMoRGSTSMZH\nj2d91noW7Vjkb3MKMCdkGIZRQ7i77d30a9GPZz9+ltSDqf42BzAnZBiGUWMQEaZ1m8Y1l13DhJQJ\nHD5ZnJSbbzEnZBiGUYO4JOgS5sbP5dSZU0z4YAKnz532qz3mhIwaTyBIOZie0A9UVk+oRYsWhIeH\nExUVRXR0udbEayytLm/FtJhpbDu8jXlb5/nVFnNCRo0nEJyQ6QmVTXn0hJKTk0lPT8d2tJbN7S1v\nZ2jboSzZtYSkz5P8Zoc9J2QEFDNTZ5J5JLPsghWgbaO2TOwyscR8Tz2hPn360LRpU95++23y8vIY\nNGgQ06dP58SJE/zsZz8jKyuLs2fP8uijj3Lo0KECPaHGjRuTnJxcbPshISGMHj2aNWvW0LBhQ558\n8kkefvhhDhw4wLx58xg4cCDr168vkCmYNm0aBw4cYN++fRw4cICHHnqo1FHSkiVLmD17NiJCREQE\nr776KuBExp4zZw5ffvkls2bNYvDgwezfv58BAwawY8eOQm3k5uYydOhQcnJy6NKlS5l6QvXq1WPM\nmDGMHTuWjIwM1q1bx9q1a1m8eDGvvfYaiYmJTJ06lby8PFq1asXixYsJCQkhPj6e2bNnEx0dzUsv\nvcTMmTMJCwujdevWBAcH86c//alE2ydNmsSnn35KVFQUI0aMYOzYsSXaaJSPCdET2PnVTh7d9Cit\nL29NiwYtfG6DjYSMGk9CQgKtWrUiPT2dPn36sHv3blJTU0lPT2fr1q2kpKSwevVqwsLCyMjIYMeO\nHdx2222MGTOGsLAwkpOTS3RA8IOe0NatW6lfv36BntC7775bYiTuzMxM3n//fVJTU5k+fTqnTxc/\nb5+vJ7Ru3ToyMjKYP39+QV6+Js+KFSuYNGlSqX2Qryf08ccfM3DgQA4cOFBi2bi4ODZs2AA404jH\njx8vUU9o27ZtREdHM2fOnEJt5OsJbd68maSkpPNiyxVne0JCArGxsaSnpzN27NjzYseJCH379qVz\n586l6iEZPxBUO4jZPWYTVCuIcR/4J9CpjYSMgKK0EYsv8NQTAie+2e7du4mNjWX8+PFMnDiRAQMG\nFATrLA9F9YSCg4PLrScUHBxcoCfUrFmz88pVpZ7QO++8U3DuiugJderUqUBPaMGCBYX0hAC+//57\nYmJiCrXhqScEMGTIkEKRtiuqJwSOnENYWBiHDx+mT58+tG3blri4uFKv24ArQ65kZuxMfrPmNzyx\n+Qme6P5EuWU9qgJzQobhgekJlU0g6gmB45QAmjZtyqBBg0hNTTUnVE66XdWNByIf4LmM54hqGsWQ\nNkPKrlRF2HScUeMxPaHqryd04sSJgrwTJ06QmJhIhw4dymzT+IH7I++ne1h3ntryFDtzd/rsvOaE\njBqP6QlVfz2hQ4cOcfPNNxMZGUmXLl3o379/wRSoUT5qSS2ein2K0B+F8vv1v+ebvG98cl4LYFoG\nFsDU+9TUgJI1HdMTCky252znF6t/Qbewbjzb69lKBToN+ACmItJIRJJEZLf7XuwqqIg0F5FEEflU\nRHaJSAs3/XUR+Y+I7BCRRSIS5KbfIyKfuK8PRSTSo639IrJdRNJFxLyKYfgZ0xMKTMKbhPPwjQ9T\nW2qTdzav7AoXiF9GQiIyCziiqgkiMgloqKrnbYsSkfXADFVNEpEQ4JyqnhSR24H33GJvACmq+hcR\n6QZ8qqpHRaQfME1Vu7pt7QeiVbVCj4HbSMj7XCy/TE1PqHpwsdxv3iTfL1R2l1xFRkL+2h13BxDv\nHr8CrAcKOSERaQfUUdUkAFU9np+nqqs8yqUCzdz0Dz2a2Jyfbhi+YMuWLV5rOzQ0lPT0dK+1Hyjn\nNAIDX27R9tfGhCtU9SCA+960mDJtgK9F5B0R+VhEnhaR2p4F3Gm44cDqYur/ih9GSwAKJIrIVhG5\nr0quwqgybG3S8AV2nwUeXhsJicga4MfFZP2xnE3UAWKBjsABYCkwEnjJo8xzOFNxG4qcuyeOE7rZ\nI7m7qmaLSFMgSUQyVTWlBNvvA+4DytwlZFw49erVIzc3l9DQUJ/+AjNqFqpKbm4u9erV87cphgde\nc0KqektJeSJySESuVNWDInIlUJyoRRbwsaruc+v8A7gJ1wmJyFSgCVDoqUIRiQAWAv1UNdfDnmz3\n/bCIvAt0AYp1Qqr6AvACOGtC5btio7I0a9aMrKwscnJy/G2KcZFTr169YiNPGP7DX2tCy4ERQIL7\n/s9iynwENBSRJqqaA/QC0gBEZBRwK9BbVc/lVxCR5sA7wHBV/cwj/VKglqoec4/7Ao955cqMChMU\nFMS1117rbzMMw/AD/loTSgD6iMhuoI/7NyISLSILAVT1LDAeWCsi2wEBXnTrPw9cAfzb3XKdHz9l\nChAKPFdkK/YVwEYRyQBSgZWqWtw6kmEYhuFD7GHVMrAt2oZhGBUj4B9WNQzDMAywkVCZiEgO8Hkl\nqzcGql4j+cIxuyqG2VUxzK6KcTHadY2qNilPQXNCXkRE0so7JPUlZlfFMLsqhtlVMWq6XTYdZxiG\nYfgNc0KGYRiG3zAn5F0CVeje7KoYZlfFMLsqRo22y9aEDMMwDL9hIyHDMAzDb5gTqiQiUtuN7r2i\nmLxgEVkqIntEZEu+GJ+b94ib/h8RudXHdo1zxQE/EZG1InKNR95ZN8pEuogs97FdI0Ukx+P8ozzy\nRrjih7tFZISP7ZrrYdNnIvK1R563+6tUEUZxWODeS5+ISCePPK/1WTns8ouwZDnsiheRbzz+Z1M8\n8m5zP497xNE386VdEzxs2uHeV43KU/cC7bpcRJaJSKY4oqExRfJ9d3+pqr0q8QLG4QjqrSgm77fA\n8+7xXcBS97gdkAEEA9cCe4HaPrSrJ3CJe/xAvl3u38f92F8jgT8Vk94I2Oe+N3SPG/rKriLlfgcs\n8mF/7Qcal5KfL+woOIF9t/iiz8phV7f88wH98u0qT10v2xVfwr1X2/0ctgTqup/Pdr6yq0jZnwDr\nfNRfrwCj3OO6wOX+ur9sJFQJRKQZ0B8nWndx3IHzTwZYBvQWEXHT31LVPFX9L7AHJ5q3T+xS1WRV\nPen+6TPRv3L0V0ncCiSp6hFVPQokAbf5ya6hwJtVde4q4A5giTpsBi4XJyK9V/usLFT1Q/e8UD2E\nJbsAe1R1n6p+D7yF07f+wCf3mIhcBsThKhKo6veq+nWRYj67v8wJVY55wMPAuRLyrwK+AFDVM8A3\nOIFVC9Jdstw0X9nlSVHRv3oikiYim0Xkziq0qbx2/dQd9i8TkavdtIDoL3fa8lpgnUeyN/sLyhZh\nLKlvvN1nFRGH9KWwZHnajhGRDBF5T0Tau2kB0V8icgnOl/nfK1q3ErQEcoDF7lT0QnHUBTzx2f3l\nLymHaouIDAAOq+pWEYkvqVgxaVpKuq/syi87DIgGengkN1dH9K8lsE5EtqvqXh/Z9S/gTVXNE5Hf\n4IwiexEg/YUzpbpMncju+XilvzwoS4TR5/dYOe1yjLtAYUkv2LUNJ5TMcRG5HfgH0JoA6S+cqbhN\nqnqkEnUrSh2gE/A7Vd0iIvOBScCjHmV8dn/ZSKjidAcGish+nKF7LxF5rUiZLOBqABGpAzQAjnim\nuzQDsn1oFyJyC4667UBVzctP1x9E//YB63EUbX1il6rmetjyItDZPfZ7f7ncRZFpEi/2V9H2DwP5\nIoyelNQ33uyz8tjlKSx5h5YgLFlSXW/Zparfqupx93gVECQijQmA/nIp7R6r6v7KArJUdYv79zIc\np1S0jG/uL28setWUFyUvdo6m8MaEt93j9hTemLCPKt6YUIZdHXEWYVsXSW8IBLvHjYHdVOHibDns\nutLjeBCw2T1uBPzXta+he9zIV3a5edfjLBCLr/oLuBSo73H8IXBbkTL9KbxwnOrtPiunXc1x1jq7\nVbSul+36cf7/EOfL/IDbd3Xcz+G1/LAxob2v7HLz8n+kXuqL/nLb3ABc7x5PA5721/1l03FVhIg8\nBqSp6nKcBb9XRWQPzs11F4Cq7hSRt4FdwBlgtBae4vG2XU8DIcDfnH0SHFDVgcANwF9F5BzO6DhB\nVXf50K4xIjIQp0+O4OyWQ1WPiMjjOCq7AI9p4ekKb9sFzmLxW+p+Al283V9XAO+6/6M6wBuqutqd\nqkRVnwdW4exg2gOcBH7p5nmzz8pjl6ewJMAZdYJgFlvXh3YNBh4QkTPAKeAu9396RkQeBN7H2Sm3\nSFV3+tAucH54JarqibLqVpFd4Oz2fF1E6uI44V/66/6yiAmGYRiG37A1IcMwDMNvmBMyDMMw/IY5\nIcMwDMNvmBMyDMMw/IY5IcMwDMNvmBMyDMMw/IY5IcO4CBAn7H/jStYdKSJhVdGWYVQUc0KGYYwE\nwsoqZBjewJyQYVQhItJCHKGwheKIlL0uIreIyCZXBKyL+/rQjWD8oYhc79YdJyKL3ONwt/4lJZwn\nVEQS3Tb+ikdgSREZJiKp4oih/VVEarvpx0XkGRHZJo6oYRMRGYwTzPZ1t/yP3GZ+55bbLiJtvdln\nRs3GnJBhVD3XAfOBCKAtcDdONOnxwB+ATCBOVTvihLl50q03D7hORAYBi4H79Qf9p6JMBTa6bSzH\nidmGiNwA/BwnAnMUcBa4x61zKbBNVTsBHwBTVXUZkAbco6pRqnrKLfuVW+4vrt2G4RUsdpxhVD3/\nVdXtACKyE1irqioi24EWOAErXxGR1jhh8IMAVPWciIwEPgH+qqqbSjlHHPB/br2VIpIvJNcbJwr5\nR27csR8Bh928c8BS9/g14J1S2s/P25p/HsPwBuaEDKPqyfM4Pufx9zmcz9zjQLKqDhKRFjhSEPm0\nBo5TvjWa4gI/CvCKqj5Syfr55Nt8FvueMLyITccZhu9pAPzPPR6ZnygiDXCm8eKAUHe9piRScKfZ\nRKQfTlh9gLXAYFcIDRFpJI4yLDif9/w27wY2usfHgPoXcD2GUWnMCRmG75kFPCUim3DkA/KZCzyn\nqp/hqJIm5DuTYpgOxInINqAvjj4OrqTEZBxZ6E+AJOBKt84JoL2IbMVRrn3MTX8ZeL7IxgTD8Akm\n5WAYNQQROa6qIf62wzA8sZGQYRiG4TdsJGQYAYyI/BL4f0WSN6nqaH/YYxhVjTkhwzAMw2/YdJxh\nGIbhN8wJGYZhGH7DnJBhGIbhN8wJGYZhGH7DnJBhGIbhN/4/QU4RP4q+dBQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght2.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 调整max_depth和min_child_weight之后重新调整n_estimators(6,4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 3\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "        \n",
    "        print(cvresult)\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds4_2_3_699.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        test_means = cvresult['test-mlogloss-mean']\n",
    "        test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-mlogloss-mean']\n",
    "        train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators4_2_3_699.png' )\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print (logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "0             1.039758           0.000839             1.036534   \n",
      "1             0.989413           0.001256             0.983233   \n",
      "2             0.947064           0.001758             0.937875   \n",
      "3             0.910632           0.001587             0.898476   \n",
      "4             0.878777           0.001420             0.864114   \n",
      "5             0.850386           0.002160             0.833357   \n",
      "6             0.827079           0.002209             0.806925   \n",
      "7             0.805894           0.002145             0.783292   \n",
      "8             0.787717           0.002272             0.762306   \n",
      "9             0.771351           0.002171             0.744002   \n",
      "10            0.756425           0.002609             0.726886   \n",
      "11            0.743353           0.002861             0.711290   \n",
      "12            0.732380           0.002989             0.697657   \n",
      "13            0.722609           0.003121             0.685125   \n",
      "14            0.713693           0.002948             0.673821   \n",
      "15            0.705496           0.003461             0.663214   \n",
      "16            0.698334           0.003224             0.653668   \n",
      "17            0.692121           0.003179             0.645275   \n",
      "18            0.685907           0.003519             0.636932   \n",
      "19            0.680837           0.003774             0.629980   \n",
      "20            0.676132           0.003710             0.623439   \n",
      "21            0.672003           0.003976             0.617094   \n",
      "22            0.668250           0.004238             0.611489   \n",
      "23            0.664964           0.004394             0.606080   \n",
      "24            0.661612           0.004658             0.600679   \n",
      "25            0.659060           0.004828             0.595888   \n",
      "26            0.656361           0.004813             0.591282   \n",
      "27            0.654096           0.004745             0.587015   \n",
      "28            0.652023           0.005398             0.582266   \n",
      "29            0.650156           0.005734             0.578578   \n",
      "..                 ...                ...                  ...   \n",
      "52            0.630146           0.008198             0.516268   \n",
      "53            0.629776           0.008137             0.514133   \n",
      "54            0.629335           0.008241             0.511982   \n",
      "55            0.629191           0.007458             0.509818   \n",
      "56            0.628773           0.007502             0.508109   \n",
      "57            0.628458           0.007344             0.506408   \n",
      "58            0.628218           0.007578             0.504625   \n",
      "59            0.628585           0.007697             0.502589   \n",
      "60            0.628154           0.007912             0.500595   \n",
      "61            0.628240           0.008210             0.498836   \n",
      "62            0.627847           0.008017             0.497175   \n",
      "63            0.627715           0.008003             0.495439   \n",
      "64            0.627417           0.008170             0.493597   \n",
      "65            0.627162           0.008397             0.492017   \n",
      "66            0.627221           0.008280             0.490164   \n",
      "67            0.626798           0.008063             0.488346   \n",
      "68            0.626820           0.008137             0.486713   \n",
      "69            0.626451           0.008519             0.485024   \n",
      "70            0.626452           0.008640             0.483595   \n",
      "71            0.626248           0.008759             0.482014   \n",
      "72            0.626253           0.008605             0.480416   \n",
      "73            0.626198           0.008553             0.479086   \n",
      "74            0.626039           0.008523             0.477775   \n",
      "75            0.626206           0.008321             0.476263   \n",
      "76            0.625955           0.008267             0.474570   \n",
      "77            0.626086           0.008420             0.473086   \n",
      "78            0.626079           0.008261             0.471626   \n",
      "79            0.625652           0.008638             0.469981   \n",
      "80            0.625495           0.008957             0.468181   \n",
      "81            0.625170           0.008967             0.466392   \n",
      "\n",
      "    train-mlogloss-std  \n",
      "0             0.000798  \n",
      "1             0.000414  \n",
      "2             0.000291  \n",
      "3             0.000456  \n",
      "4             0.000536  \n",
      "5             0.000418  \n",
      "6             0.000773  \n",
      "7             0.001284  \n",
      "8             0.001420  \n",
      "9             0.001555  \n",
      "10            0.001376  \n",
      "11            0.001344  \n",
      "12            0.001097  \n",
      "13            0.001334  \n",
      "14            0.001733  \n",
      "15            0.001832  \n",
      "16            0.002046  \n",
      "17            0.002207  \n",
      "18            0.002315  \n",
      "19            0.002490  \n",
      "20            0.002693  \n",
      "21            0.002513  \n",
      "22            0.002342  \n",
      "23            0.002246  \n",
      "24            0.001936  \n",
      "25            0.002128  \n",
      "26            0.002436  \n",
      "27            0.002559  \n",
      "28            0.002277  \n",
      "29            0.002459  \n",
      "..                 ...  \n",
      "52            0.003572  \n",
      "53            0.003432  \n",
      "54            0.003922  \n",
      "55            0.004166  \n",
      "56            0.004392  \n",
      "57            0.004228  \n",
      "58            0.004062  \n",
      "59            0.003921  \n",
      "60            0.003802  \n",
      "61            0.003847  \n",
      "62            0.003647  \n",
      "63            0.003726  \n",
      "64            0.004023  \n",
      "65            0.004142  \n",
      "66            0.004119  \n",
      "67            0.004216  \n",
      "68            0.004290  \n",
      "69            0.004200  \n",
      "70            0.004411  \n",
      "71            0.004567  \n",
      "72            0.004511  \n",
      "73            0.004166  \n",
      "74            0.004255  \n",
      "75            0.004002  \n",
      "76            0.004190  \n",
      "77            0.004280  \n",
      "78            0.004210  \n",
      "79            0.004229  \n",
      "80            0.004448  \n",
      "81            0.004520  \n",
      "\n",
      "[82 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.487765313311\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nnM/L0TZiAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train, cv_folds = kfold)\n",
    "#from sklearn.model_selection import cross_val_score\n",
    "#results = cross_val_score(xgb2_3, X_train, y_train, metrics='mlogloss', cv=kfold)\n",
    "#print results\n",
    "#print(\"CV logloss: %.2f%% (%.2f%%)\" % (results.mean()*100, results.std()*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n7tsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1000x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds4_2_3_699.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[30:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(100,cvresult.shape[0]+100)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail4_2_3_699.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 调整树的参数：subsample 和 colsample_bytree\n",
    "(粗调，参数的步长为0.1；下一步是在粗调最佳参数周围，将步长降为0.05，进行精细调整)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.62073, std: 0.00772, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.62041, std: 0.00722, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.61710, std: 0.00591, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.61620, std: 0.00737, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.61636, std: 0.00635, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.61399, std: 0.00631, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.62198, std: 0.00973, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.62040, std: 0.00771, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.61670, std: 0.00676, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.61618, std: 0.00768, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.61382, std: 0.00693, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.61459, std: 0.00652, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.61954, std: 0.00860, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.61951, std: 0.00834, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.61916, std: 0.00856, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.61482, std: 0.00697, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.61459, std: 0.00818, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.61515, std: 0.00816, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.62116, std: 0.00536, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.62113, std: 0.00737, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.61591, std: 0.00749, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.61598, std: 0.00547, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.61383, std: 0.00861, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.61493, std: 0.00915, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       " -0.61381893983194602)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=82,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.613819 using {'colsample_bytree': 0.7, 'subsample': 0.7}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 调整正则化参数：reg_alpha 和reg_lambda"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'reg_alpha': [0.001, 0.01, 0.05, 0.1], 'reg_lambda': [0.001, 0.01, 0.05, 0.1]}"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "reg_alpha = [1e-3, 1e-2, 0.05, 0.1]    #default = 0\n",
    "reg_lambda = [1e-3, 1e-2, 0.05, 0.1]   #default = 1\n",
    "\n",
    "#reg_alpha = [ 1.5, 2]    #default = 0, 测试0.1,1，1.5，2\n",
    "#reg_lambda = [0.5, 1, 2]      #default = 1，测试0.1， 0.5， 1，2\n",
    "\n",
    "param_test5_1 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "param_test5_1\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.61413, std: 0.00519, params: {'reg_alpha': 0.001, 'reg_lambda': 0.001},\n",
       "  mean: -0.61443, std: 0.00597, params: {'reg_alpha': 0.001, 'reg_lambda': 0.01},\n",
       "  mean: -0.61444, std: 0.00718, params: {'reg_alpha': 0.001, 'reg_lambda': 0.05},\n",
       "  mean: -0.61453, std: 0.00690, params: {'reg_alpha': 0.001, 'reg_lambda': 0.1},\n",
       "  mean: -0.61442, std: 0.00615, params: {'reg_alpha': 0.01, 'reg_lambda': 0.001},\n",
       "  mean: -0.61463, std: 0.00743, params: {'reg_alpha': 0.01, 'reg_lambda': 0.01},\n",
       "  mean: -0.61447, std: 0.00778, params: {'reg_alpha': 0.01, 'reg_lambda': 0.05},\n",
       "  mean: -0.61542, std: 0.00648, params: {'reg_alpha': 0.01, 'reg_lambda': 0.1},\n",
       "  mean: -0.61422, std: 0.00602, params: {'reg_alpha': 0.05, 'reg_lambda': 0.001},\n",
       "  mean: -0.61412, std: 0.00697, params: {'reg_alpha': 0.05, 'reg_lambda': 0.01},\n",
       "  mean: -0.61375, std: 0.00536, params: {'reg_alpha': 0.05, 'reg_lambda': 0.05},\n",
       "  mean: -0.61377, std: 0.00742, params: {'reg_alpha': 0.05, 'reg_lambda': 0.1},\n",
       "  mean: -0.61342, std: 0.00726, params: {'reg_alpha': 0.1, 'reg_lambda': 0.001},\n",
       "  mean: -0.61386, std: 0.00601, params: {'reg_alpha': 0.1, 'reg_lambda': 0.01},\n",
       "  mean: -0.61429, std: 0.00725, params: {'reg_alpha': 0.1, 'reg_lambda': 0.05},\n",
       "  mean: -0.61395, std: 0.00745, params: {'reg_alpha': 0.1, 'reg_lambda': 0.1}],\n",
       " {'reg_alpha': 0.1, 'reg_lambda': 0.001},\n",
       " -0.61342002865509127)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb5_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=82,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.7,\n",
    "        colsample_bytree=0.7,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch5_1 = GridSearchCV(xgb5_1, param_grid = param_test5_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch5_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch5_1.grid_scores_, gsearch5_1.best_params_,     gsearch5_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 21.39263721,  20.40617242,  20.99202375,  19.40822811,\n",
       "         18.75086308,  19.05000124,  20.21540942,  20.28170114,\n",
       "         20.19663539,  18.91906729,  19.89623127,  21.42581396,\n",
       "         21.56220713,  20.07466087,  17.91794152,  18.00797763]),\n",
       " 'mean_score_time': array([ 0.05885472,  0.06019783,  0.06344995,  0.05565467,  0.05398674,\n",
       "         0.08598256,  0.08511629,  0.05587573,  0.06668139,  0.05901117,\n",
       "         0.06028657,  0.06737127,  0.06590509,  0.05294681,  0.04930787,\n",
       "         0.04675798]),\n",
       " 'mean_test_score': array([-0.61412577, -0.61442885, -0.61444445, -0.61453216, -0.61441745,\n",
       "        -0.61462594, -0.61447246, -0.61542357, -0.61421813, -0.61412233,\n",
       "        -0.61375477, -0.61377168, -0.61342003, -0.61386283, -0.61429185,\n",
       "        -0.61395415]),\n",
       " 'mean_train_score': array([-0.44157778, -0.44085107, -0.44060481, -0.44061662, -0.44095344,\n",
       "        -0.44131733, -0.44140971, -0.44160019, -0.4405386 , -0.44085412,\n",
       "        -0.44186493, -0.4420596 , -0.44115465, -0.44085029, -0.44136562,\n",
       "        -0.4419507 ]),\n",
       " 'param_reg_alpha': masked_array(data = [0.001 0.001 0.001 0.001 0.01 0.01 0.01 0.01 0.05 0.05 0.05 0.05 0.1 0.1\n",
       "  0.1 0.1],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_reg_lambda': masked_array(data = [0.001 0.01 0.05 0.1 0.001 0.01 0.05 0.1 0.001 0.01 0.05 0.1 0.001 0.01\n",
       "  0.05 0.1],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'reg_alpha': 0.001, 'reg_lambda': 0.001},\n",
       "  {'reg_alpha': 0.001, 'reg_lambda': 0.01},\n",
       "  {'reg_alpha': 0.001, 'reg_lambda': 0.05},\n",
       "  {'reg_alpha': 0.001, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 0.001},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 0.01},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 0.05},\n",
       "  {'reg_alpha': 0.01, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 0.001},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 0.01},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 0.05},\n",
       "  {'reg_alpha': 0.05, 'reg_lambda': 0.1},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 0.001},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 0.01},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 0.05},\n",
       "  {'reg_alpha': 0.1, 'reg_lambda': 0.1}],\n",
       " 'rank_test_score': array([ 7, 11, 12, 14, 10, 15, 13, 16,  8,  6,  2,  3,  1,  4,  9,  5], dtype=int32),\n",
       " 'split0_test_score': array([-0.61077637, -0.61280168, -0.60998757, -0.60983313, -0.61234903,\n",
       "        -0.61159684, -0.60978269, -0.61158704, -0.61228398, -0.61139492,\n",
       "        -0.61060409, -0.61144705, -0.60902331, -0.6105276 , -0.61007879,\n",
       "        -0.60917289]),\n",
       " 'split0_train_score': array([-0.44143713, -0.44063506, -0.4410948 , -0.4420415 , -0.44200664,\n",
       "        -0.4418328 , -0.44317362, -0.44324275, -0.44160113, -0.44151188,\n",
       "        -0.44389095, -0.44358816, -0.44121892, -0.44075425, -0.44023516,\n",
       "        -0.44274199]),\n",
       " 'split1_test_score': array([-0.61020194, -0.60678422, -0.60720876, -0.60845122, -0.60633593,\n",
       "        -0.60537217, -0.6082011 , -0.60826424, -0.60679187, -0.60556989,\n",
       "        -0.60979401, -0.60554982, -0.60617032, -0.60804659, -0.60760358,\n",
       "        -0.60605802]),\n",
       " 'split1_train_score': array([-0.44339943, -0.44244255, -0.44162055, -0.44248406, -0.4425337 ,\n",
       "        -0.44433429, -0.44324061, -0.443271  , -0.44256768, -0.44286917,\n",
       "        -0.44378426, -0.44425845, -0.44301901, -0.44332153, -0.44338252,\n",
       "        -0.4438452 ]),\n",
       " 'split2_test_score': array([-0.61413447, -0.6130375 , -0.61563407, -0.61360272, -0.61592379,\n",
       "        -0.61509916, -0.61443244, -0.61566208, -0.61393482, -0.61496151,\n",
       "        -0.6117151 , -0.61325343, -0.6134329 , -0.61263589, -0.61380486,\n",
       "        -0.61513424]),\n",
       " 'split2_train_score': array([-0.44203071, -0.44026733, -0.44171365, -0.44177509, -0.44134262,\n",
       "        -0.44075742, -0.44277774, -0.44184633, -0.44141447, -0.44235343,\n",
       "        -0.44286285, -0.44277783, -0.44330332, -0.44196221, -0.44291347,\n",
       "        -0.44185725]),\n",
       " 'split3_test_score': array([-0.62415455, -0.6251618 , -0.62773473, -0.62780139, -0.62506976,\n",
       "        -0.62800291, -0.62948837, -0.62737293, -0.6251985 , -0.62667206,\n",
       "        -0.62432516, -0.62770633, -0.62711666, -0.62537769, -0.62820499,\n",
       "        -0.62760892]),\n",
       " 'split3_train_score': array([-0.43745163, -0.43484327, -0.4359312 , -0.43398392, -0.43635883,\n",
       "        -0.43610641, -0.43479673, -0.43620966, -0.43439894, -0.43466951,\n",
       "        -0.43522269, -0.43461398, -0.4356847 , -0.43640818, -0.43569308,\n",
       "        -0.4380217 ]),\n",
       " 'split4_test_score': array([-0.61137045, -0.61436914, -0.61167106, -0.61298547, -0.61241993,\n",
       "        -0.61307243, -0.61047103, -0.61424449, -0.61289179, -0.6120259 ,\n",
       "        -0.61234416, -0.61091348, -0.6113708 , -0.6127372 , -0.61178002,\n",
       "        -0.61181177]),\n",
       " 'split4_train_score': array([-0.44356998, -0.44606715, -0.44266386, -0.44279853, -0.44252543,\n",
       "        -0.44355574, -0.44305985, -0.44343123, -0.44271076, -0.44286662,\n",
       "        -0.4435639 , -0.44505959, -0.44254729, -0.44180529, -0.44460387,\n",
       "        -0.44328735]),\n",
       " 'std_fit_time': array([ 0.87830016,  0.8601145 ,  0.2380501 ,  0.64394225,  0.23231671,\n",
       "         0.95190617,  0.19685602,  0.12145424,  0.69187881,  0.04741138,\n",
       "         0.80954179,  0.41490315,  0.10762285,  1.95363916,  0.21963582,\n",
       "         0.0584411 ]),\n",
       " 'std_score_time': array([ 0.00170214,  0.00804466,  0.01034129,  0.00885825,  0.00286227,\n",
       "         0.05760048,  0.0582944 ,  0.00551756,  0.01401721,  0.00970072,\n",
       "         0.00675181,  0.01583404,  0.0034085 ,  0.00420692,  0.00172948,\n",
       "         0.00442467]),\n",
       " 'std_test_score': array([ 0.0051913 ,  0.00596987,  0.00718207,  0.00690417,  0.006153  ,\n",
       "         0.00743437,  0.0077812 ,  0.00648348,  0.0060211 ,  0.00697339,\n",
       "         0.00535643,  0.00742365,  0.00726135,  0.00600462,  0.00724631,\n",
       "         0.00745121]),\n",
       " 'std_train_score': array([ 0.00221528,  0.00363927,  0.00239097,  0.00333506,  0.00233836,\n",
       "         0.00289294,  0.00331027,  0.00275539,  0.00311214,  0.00313179,\n",
       "         0.00334037,  0.00379801,  0.00282689,  0.0023663 ,  0.00317508,\n",
       "         0.00207112])}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch5_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/Users/limeng/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.613420 using {'reg_alpha': 0.1, 'reg_lambda': 0.001}\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ8AAAELCAYAAAAGFYvBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzsnXl8VOX1/98n+84W1oSdIMgWMGDY\nF0GSoHVpXbBVtBZRa221SsXWllJtUVut/brigmir9qd1QQggKLsg+y77mrAaIAtZJ3N+f9zJZJJM\nFiCTySTP+/WaV3Kfe+5zzzDhfuY8yzmiqhgMBoPBUJf4edsBg8FgMDQ+jPgYDAaDoc4x4mMwGAyG\nOseIj8FgMBjqHCM+BoPBYKhzjPgYDAaDoc4x4mMwGAyGOseIj8FgMBjqHI+Kj4gkicgeEdkvIk9U\nYnOriOwSkZ0i8oFL+0IROS8i88rZvysih0Rki+MV72gfJSKZLu1/vBg/DAaDwVB3BHiqYxHxB14B\nxgFpwHoRmauqu1xs4oBpwFBVPScirVy6eB4IA6a46f5xVf3ETftKVb3uYv1wR3R0tHbq1Km6t2kw\nGAwGBxs3bvxBVVvWxNZj4gMMAvar6kEAEfkIuAFwfehPBl5R1XMAqnq65ISqfi0io+rIjwp06tSJ\nDRs21MLtDQaDoXEgIkdqauvJYbcY4JjLcZqjzZXuQHcRWS0ia0UkqYZ9PyMi20TkRREJdmkfLCJb\nRWSBiPS6CD8MBoPBUId4UnzETVv5LKYBQBwwCpgIvCUiTavpdxrQAxgINAd+52jfBHRU1X7A/wGf\nX4QflqHIfSKyQUQ2nDlzpho3DAaDwXCpeFJ80oD2LsexwHE3Nl+oapGqHgL2YIlRpajqCbUoAGZj\nDauhqlmqmuP4PRUIFJHoGvpR0vcsVU1Q1YSWLWs0bGkwGAyGS8CTcz7rgTgR6QykA7cDd5Sz+Rwr\n4nnXIRTdgYNVdSoibVX1hIgIcCOww9HeBjilqioig7CENQM4XwM/akRRURFpaWnk5+dfyuWGekZI\nSAixsbEEBgZ62xWDodHhMfFRVZuIPAQsAvyBd1R1p4jMADao6lzHuWtFZBdQjLWKLQNARFZiDa9F\niEgacK+qLgL+IyItsYbTtgD3O275E+ABEbEBecDtahUrcuvHpbyntLQ0IiMj6dSpE5b2GXwVVSUj\nI4O0tDQ6d+7sbXcMhkaHmGJy7klISNDyq92+//57evToYYSngaCq7N69m549e3rbFYOhQSAiG1U1\noSa2JsPBRWKEp+FgPkuDwXsY8TEYDAaDxenvYdP7dXIrTy44MBgMBoMvUHgBlj8La16BsBbQ+2YI\nCvfoLU3kY3DLsmXLuO666y7bpipUlYcffphu3brRt29fNm3a5NZu48aN9OnTh27duvHwww9TMk95\n9uxZxo0bR1xcHOPGjePcuXMA7N69m8GDBxMcHMzf//73S/bPYGjwqML38+DlQbD6Jeh3OzzwrceF\nB4z4+Cyqit1u97Ybl8WCBQvYt28f+/btY9asWTzwwANu7R544AFmzZrltF24cCEAM2fO5JprrmHf\nvn1cc801zJw5E4DmzZvzr3/9i8cee6zO3ovB4HOcPQQf3Ab//SmENIGfL4IbXoHw6Dq5vRl2u0T+\n/OVOdh3PqtU+r2wXxZ+u71Xp+cOHD5OcnMzo0aNZs2YNv/nNb3j99dcpKCiga9euzJ49m4iICFJT\nU3n00UeJjo5mwIABHDx4kHnz5rntc926dfzmN78hLy+P0NBQZs+ezRVXXFHGZvr06Rw4cID09HSO\nHTvG1KlTmTx5MgA5OTn85Cc/YceOHVx11VX8+9//RkSYMWMGX375JXl5eQwZMoQ33nijwgT/F198\nwV133YWIkJiYyPnz5zlx4gRt27Z12pw4cYKsrCwGDx4MwF133cXnn39OcnIyX3zxBcuWLQNg0qRJ\njBo1imeffZZWrVrRqlUr5s+ff9GfgcHQ4LEVwOp/wcq/g18AXPsMXD0F/Ot2v5uJfHyMPXv2cNdd\nd7F48WLefvttlixZwqZNm0hISOCFF14gPz+fKVOmsGDBAlatWkV1aYJ69OjBihUr2Lx5MzNmzODJ\nJ590a7dt2zbmz5/PmjVrmDFjBsePW0kiNm/ezD//+U927drFwYMHWb16NQAPPfQQ69evZ8eOHeTl\n5TnF7/XXX+f1118HID09nfbtS5NPxMbGkp6eXua+6enpxMbGurU5deqUU6jatm3L6dOnMRgMVXBg\nKbw2BJY+Dd2T4JfrYMhDdS48YCKfS6aqCMWTdOzYkcTERObNm8euXbsYOnQoAIWFhQwePJjdu3fT\npUsX58bJiRMnMmvWrEr7y8zMZNKkSezbtw8RoaioyK3dDTfcQGhoKKGhoYwePZp169bRtGlTBg0a\n5BSH+Ph4Dh8+zLBhw1i6dCnPPfccubm5nD17ll69enH99ddz//33O/t0t8esfHRUExuDwVAN2Sdh\n0ZOw43/QrDP89H8QN9arLhnx8THCw62JQFVl3LhxfPjhh2XOb968+aL6e+qppxg9ejSfffYZhw8f\nZtSoUW7tyj/wS46Dg0uTivv7+2Oz2cjPz+fBBx9kw4YNtG/fnunTp7tNSRQbG8uxY6UJx9PS0mjX\nrl0Fm7S0NLc2rVu3dg7TnThxglatWmEwGFwotsH6t+Cbp6G4EEZNg6G/gcAQb3tmht18lcTERFav\nXs3+/fsByM3NZe/evfTo0YODBw9y+PBhAP773/9W2U9mZiYxMVaFiXfffbdSuy+++IL8/HwyMjJY\ntmwZAwcOrNS2RGiio6PJycnhk0/c1f2DH/3oR7z33nuoKmvXrqVJkyZl5nvAGk6LjIxk7dq1qCrv\nvfceN9xwg/P6OXPmADBnzhxnu8FgAI6thzdHwcLfQftB8OAaGPVEvRAeMJGPz9KyZUveffddJk6c\nSEFBAQBPP/003bt359VXXyUpKYno6GgGDRpUZT9Tp05l0qRJvPDCC4wZM6ZSu0GDBjFhwgSOHj3K\nU089Rbt27di7d69b26ZNmzJ58mT69OlDp06dyghVyXzP/fffT0pKCqmpqXTr1o2wsDBmz57ttIuP\nj2fLli0AvPbaa9x9993k5eWRnJxMcnIyAE888QS33norb7/9Nh06dODjjz8G4OTJkyQkJJCVlYWf\nn59zTioqKqq6f1aDwffJPQtf/xk2zoHItnDLHLjyBqhnw9Umt1slVJbbzRfygOXk5BAREYGq8stf\n/pK4uDgeeeSRS+5v+vTpRERENMily77ymRoM1WK3w9YPYPEfIe88JD5gRTrBkXXmwsXkdjORTwPk\nzTffZM6cORQWFtK/f3+mTJnibZcMBoMnObUT5j0Kx9ZC+6thwgvQpre3vaoSE/lUgi9HPu6YPXs2\nL730Upm2oUOH8sorr3jJo/qBL3+mBgMF2bBsJqx9zdooeu1foN8d4Oed6XwT+RgqcM8993DPPfd4\n2w2DwVAbqML3c2HBE5B9HAZMgrHTIay5tz2rMUZ8DAaDwZfIOAALpsL+JdC6D9w6x1rN5mN4NDYT\nkSQR2SMi+0XkiUpsbhWRXSKyU0Q+cGlfKCLnRWReOft3ReSQiGxxvOId7T8VkW2O17ci0s/lmsMi\nst1hX3YszWAwGHyBonxriO3VwXD0O0iaCfct80nhAQ9GPiLiD7wCjAPSgPUiMldVd7nYxAHTgKGq\nek5EXHcJPg+EAe5myx9X1fKbRw4BIx39JAOzgKtdzo9W1R8u+40ZDAZDXbP/a0h9DM4ehF43w/i/\nQlTb6q+rx3hy2G0QsF9VDwKIyEfADcAuF5vJwCuqeg5AVZ3JuVT1axEZVdObqeq3LodrgdjKbA0G\ng8EnyDoOC6fBrs+heVe48zPoWvl+PF/Ck8NuMcAxl+M0R5sr3YHuIrJaRNaKSFIN+37GMbz2oogE\nuzl/L7DA5ViBr0Rko4jcV1mnInKfiGwQkQ3VJeRs6PhCPZ+PP/6YXr164efnR/mViQaDT1Nsswq7\nvTwQ9i6E0X+wMhQ0EOEBz4qPu+205dd1BwBxwChgIvCWiDStpt9pQA9gINAc+F2Zm4qMxhIf1/ah\nqjoASAZ+KSIj3HWsqrNUNUFVE1q2bFmNG97F1POB3r178+mnnzJihNuP02DwTY6uhVkjrUSgHYfA\ng2th5OMQ4O57tu/iyWG3NKC9y3EscNyNzVpVLQIOicgeLDFaX1mnqnrC8WuBiMwGnNvuRaQv8BaQ\nrKoZLtccd/w8LSKfYQ0JrrjUNwZYSxxPbr+sLirQpg8kz6z0tKnnU7aej9mfY2hQXMiAJX+Ezf+G\nqBi47d/Q47p6lxantvBk5LMeiBORziISBNwOzC1n8zkwGkBEorGG4Q5W1amItHX8FOBGYIfjuAPw\nKXCnqu51sQ8XkciS34FrS67xRUw9n4o2BoNPY7dbedhevgq2fgRDHrbq7PS8vsEKD3gw8lFVm4g8\nBCwC/IF3VHWniMwANqjqXMe5a0VkF1CMtYotA0BEVmINr0WISBpwr6ouAv4jIi2xhvW2ACUFYv4I\ntABedXzDtjl22rYGPnO0BQAfqOrCy36DVUQonsTU8zH1fAwNiJPbrbQ4aeugwxCY8A9ofaW3vaoT\nPLrJVFVTgdRybX90+V2BRx2v8tcOr6RPtzNuqvoL4Bdu2g8C/Spe4ZuYej4VbQwGnyM/C5b9Db57\nHUKbw42vQ7/bG3SkUx5Tz8dHMfV8DAYfRBV2fAqvDLLysV11Nzy0HuInNirhASM+PotrPZ++ffuS\nmJjI7t27CQ0NddbzGTZsGK1bt6ZJkyaV9jN16lSmTZvG0KFDKS4urtSupJ5PYmKis55PZbjW87nx\nxhsr1PMpmfNJSUmhS5cudOvWjcmTJ/Pqq6867eLj452/v/baa/ziF7+gW7dudO3a1VnP57PPPiM2\nNpY1a9YwYcIExo8fX/0/nMHgLX7YD+/fBJ/cAxGt4Bdfw3Uv+lQ+ttrEZLWuBF/Oam3q+dQcX/lM\nDT5MUR6sfAFW/xMCQmDMUzDwXvDz97ZntY7Jat3IMfV8DIZ6wr7FVlqcc4ehzy1w7TMQ2drbXtUL\nTORTCb4c+bjD1PNxjy9/poZ6TGYaLHwCvv8SWsRZq9i6jPS2Vx7HRD6GCph6PgZDHVBcZC0kWDYT\n1A7X/BEG/woCgrztWb3DiI/BYDDUBke+tfbsnPkeuidB8rPQrJO3vaq3GPExGAyGy+HCD/DVU7D1\nA2jSHm7/EHqkeNureo8RH4PBYLgU7HbY9C4s+TMU5sCwR2DE4xAU7m3PfAKzz8fgFl8oqTB9+nRi\nYmKIj48nPj6e1NRUt9cbDLXO8S3w9liY94iVEPj+1TB2uhGei8CIj49iSipYPPLII2zZsoUtW7aQ\nkmKGOgweJj8TUqfCm6Ph/FG4aRZM+hJa9fC2Zz6HER8f4vDhw/Ts2ZMHH3yQAQMG8P777zN48GAG\nDBjALbfcQk5ODgCpqan06NGDYcOG8fDDD1cZnaxbt44hQ4bQv39/hgwZwp49eyrYTJ8+nTvvvJMx\nY8YQFxfHm2++6TxXUlKhR48e/PSnP3VGJTNmzGDgwIH07t2b++67z22C0MpKKrjiWlJBRJwlFQyG\nOkUVtn1sFXdbNwsS7oWHNkC/2xpdWpzawsz5XCLPrnuW3Wd312qfPZr34HeDflelzZ49e5g9ezYz\nZszg5ptvZsmSJYSHh/Pss8/ywgsvMHXqVKZMmcKKFSvo3LkzEydOrPqejpIKAQEBLFmyhCeffJL/\n/e9/Fey2bdvG2rVruXDhAv3792fChAmAlch0586dtGvXjqFDh7J69WqGDRvGQw89xB//aOWQvfPO\nO5k3bx7XX3+9M7XO/fffX2lJBdf8btWVVHj55Zd57733SEhI4B//+AfNmjWr8v0aDBfNmb2Q+ls4\ntALa9YeJH0HMAG975fOYyMfHKCmpsHbtWmdJhfj4eObMmcORI0fcllSoiszMTG655RZ69+7NI488\nws6dO93alZRUiI6OdpZUAJwlFfz8/JwlFQCWLl3K1VdfTZ8+ffjmm2+c/d5///3OsgqXW1LhgQce\n4MCBA2zZsoW2bdvy29/+tsr3ajBcFIW58PUMeG0IHN9qbRT9xddGeGoJE/lcItVFKJ7ClFQotWnd\nujRNyeTJky9r8YPBUIY9C2HB49a8Tt/b4dq/WMlADbWGRyMfEUkSkT0isl9EnqjE5lYR2SUiO0Xk\nA5f2hSJyXkTmlbN/V0QOicgWxyve0S4i8i/HvbaJyACXayaJyD7Ha5Kn3m9dYkoqUGZ+6LPPPqN3\n795VvleDoVrOH4UP74APb4PAMLh7Ptz8hhEeD+CxyEdE/IFXgHFAGrBeROaq6i4XmzhgGjBUVc+J\niOsn/DwQBrjLivm4qpZ/oiUDcY7X1cBrwNUi0hz4E5AAKLDR4ce52nif3sK1pEJBQQEATz/9NN27\nd3eWVIiOjmbQoEFV9jN16lQmTZrECy+8wJgxbuv0AaUlFY4ePeosqbB37163tq4lFTp16lShpAJY\nw28pKSmkpqbSrVs3wsLCmD17ttMuPj6eLVu2AFZJhbvvvpu8vDySk5OdJRWmTp3Kli1bEBE6derE\nG2+8UYN/OYPBDbZCWPsKLH/OOh77Z0h80KTF8SAeSywqIoOB6ao63nE8DUBV/+Zi8xywV1XfqqSP\nUcBjqnqdS9u7wLzy4iMibwDLVPVDx/EeYFTJS1WnuLOrDF9OLGpKKtQcX/lMDR7k0EqY/1v4YQ/0\nuA6S/gZNO3jbK5/kYhKLenLYLQY45nKc5mhzpTvQXURWi8haEUmqYd/POIbWXhSRkkmHyu5XEz8a\nFG+++Sbx8fH06tWLzMxMU1LBYHBHzmn49D6Ycx3Y8mDif+H2/xjhqSM8ueDA3eL38mFWANYw2Sgg\nFlgpIr1V9XwV/U4DTgJBwCzgd8CMKu5XEz8sh0XuA+4D6NDBd/8AH3nkkQqRzuWUVJg+fXptumcw\neBd7MWx4B77+CxTlwvDHYPhvISjM2541KjwpPmlAe5fjWOC4G5u1qloEHHIMlcUB6yvrVFVLZpkL\nRGQ2UDIWVNn90rDEzbV9WSV9z8ISNBISEhpUoSNTUsFgANI3wfxH4fhm6DwCJrwA0XHe9qpR4slh\nt/VAnIh0FpEg4HZgbjmbz4HRACISjTUMd7CqTkWkreOnADcCOxyn5gJ3OVa9JQKZDqFaBFwrIs1E\npBlwraPNYDA0FvLOW/M6b46BrOPw47fhrrlGeLyIxyIfVbWJyENYD3p/4B1V3SkiM4ANqjqXUmHY\nBRRjrWLLABCRlUAPIEJE0oB7VXUR8B8RaYk1nLYFuN9xy1QgBdgP5AL3OPw4KyJ/oTSamqGqZz31\nvg0GQz1CFbb9F776A+RmwNVTYPSTENLE2541ekwZ7Urw5dVuhppjPtMGzOndVrRzZBXEXGUNsbWL\n97ZXDRpTRttgMDReCi9Y+3XWvAxBEXDdP2HAJPAz2cTqE+bTMLilPtXz+f3vf0/79u2JiIi45HsZ\nGgGqsHs+vHI1rP4n9L0NfrUREu4xwlMPMZ+Ij9KY6vlcf/31zkSmBoNbzh2GD2+Hj+6A4Ei4ZwHc\n+CqER3vbM0MlGPHxIRpjPR+w8tiVz/lmMABgK4AVf4dXEq1MBdc+DVNWQMch3vbMUA1mzucSOfnX\nv1Lwfe3W8wnu2YM2Tz5ZpU1jq+djMFTKwWUw/zHI2Ac9f2SlxWkSW+1lhvqBER8fo6Sez7x585z1\nfAAKCwsZPHiw23o+s2bNqrS/zMxMJk2axL59+xARioqK3NqV1PMJDQ111vNp2rSps54P4KznM2zY\nMJYuXcpzzz1Hbm4uZ8+epVevXlx//fXOWj5Qs3o+BkMFsk/Cot/Djk+gWSf46ScQN87bXhkuEiM+\nl0h1EYqnaGz1fAwGJ/ZiWP8WfPM02PJh5O9g2CMQGOptzwyXgJnz8VEaSz0fgwGAtA0waxQsmGrt\n2XlwrbVZ1AiPz2LEx0dxrefTt29fEhMT2b17N6Ghoc56PsOGDaN169Y0aVL5bu6pU6cybdo0hg4d\nSnFxcaV2JfV8EhMTnfV8KsO1ns+NN95YoZ5PybxPSkoKXbp0oVu3bkyePJlXX33VaRcfX7oZcOrU\nqcTGxpKbm0tsbKxJdNqYyD0LX/4G3hoLF87ALe/CnZ9Bi67e9sxwmZgMB5XgyxkOTD2fmuMrn2mj\nQxW2fACLn7Lysl19P4x6AkKivO2ZoQpMhoNGzptvvsmcOXMoLCykf//+pp6Pwbc4tcvKPH10DcQO\ngutegDZ9vO2VoZYxkU8l+HLk447LqefTkPHlz7TBUZADy2fCmletCGfcDIj/mclO4EOYyMdQAVPP\nx1BvUYXvv4SFT0BWOvS/E8b+GcJbeNszgwcx4nORqKrZi9JAMFF/PeDsQUidCvsXQ+ve8JPZ0OFq\nb3tlqAOM+FwEISEhZGRk0KJFCyNAPo6qkpGRQUhIiLddaZzYCmD1S7DyH+AXAOP/BoPuA3/zSGos\nmE/6IoiNjSUtLY0zZ8542xVDLRASEuLMzmCoQw58Y6XFOXsAet0E4/8KUWZzcWPDo+IjIknAS1iV\nTN9S1ZlubG4FpgMKbFXVOxztC4FEYJWqVsiMKSL/B9yjqhGO4xdxlOQGwoBWqtrUca4Y2O44d1RV\nf3Qp7ycwMNCZtsZgMFwkWSdg0TTY+Rk07wI/+xS6XeNtrwxewmPiIyL+wCvAOCANWC8ic1V1l4tN\nHDANGKqq50SklUsXz2OJSIV1wiKSADR1bVPVR1zO/wro73I6T1VNCUODwRsU22DdLFj6VyguhFFP\nwtBfQ6AZ8mzMeDLyGQTsV9WDACLyEXADsMvFZjLwiqqeA1DV0yUnVPVrERlVvlOHqD0P3AHcVMm9\nJwJ/qoX3YDAYLodj62Deo3BqO3QbCynPW1GPodHjyQX0McAxl+M0R5sr3YHuIrJaRNY6humq4yFg\nrqpWLPwCiEhHoDPwjUtziIhscNzjxpq/BYPBcEnknoW5v4K3x0HeWbj1fSv7tBEegwNPRj7uloOV\nX9saAMQBo4BYYKWI9FbV8247FGkH3OKwr4zbgU9U1TVRWQdVPS4iXYBvRGS7qh5w0/99wH0AHTp0\nqOIWBoPBLXY7bPkPLP4j5GfCkF/ByCcg2JRAN5TFk5FPGtDe5TgWOO7G5gtVLVLVQ8AeLDGqjP5A\nN2C/iBwGwkRkfzmb24EydQZU9bjj50FgGWXng1ztZqlqgqomtGzZsgo3DAZDBU7ugNlJMPchaHkF\n3O+oLGqEx+AGT4rPeiBORDqLSBCWKMwtZ/M5jhVqIhKNNQx3sLIOVXW+qrZR1U6q2gnIVdVuJedF\n5AqgGbDGpa2ZiAS73GMoZeedDAbD5VCQDQufhDdGQMZ+uOFVuDsVWvfytmeGeozHht1U1SYiDwGL\nsJZav6OqO0VkBrBBVec6zl0rIruAYuBxVc0AEJGVQA8gQkTSgHtVdVE1t50IfKRlt673BN4QETuW\n2M50XXFnMBguEVXY9TksnGZVF73qbrjmjxDW3NueGXwAk1i0EtwlFjUYDA4yDkDqY9aG0TZ9YMKL\n0L7yAoOGxoFJLGowGDxDUT6setF6BQRD8nOQcK9Ji2O4aMxfjMFgqBn7lljRzrlD0PsnMP4ZiGzj\nba8MPooRH4PBUDWZ6Va5g+/nQotucNcX0GWUt70y+DhGfAwGg3uKi+C712Hp30CLYcwfYMjD1nCb\nwXCZGPExGAwVObIG5v8WTu+EuPGQ8hw06+RtrwwNiIsSHxHxAyJUNctD/hgMBm9y4QdY/CfY8m+I\nioXb/gM9JoCpX2WoZaoVHxH5ALgfax/ORqCJiLygqs972jlDNaRtgDUvQ0gTaNoBmnSwfjZtDxFt\nwM+Te4gNDQq7HTbNgSXToTAHhv4GRk6FoHBve2ZooNQk8rlSVbNE5KdAKvA7LBEy4uMtVC3RWTId\ngqNA/CD3h7I2/kEQFVMqRk07QpP2pceR7czyWIPFia1W5un0DdBxGEz4B7Tq4W2vDA2cmjx9AkUk\nELgReFlVi0TE7Ez1Frln4fMHYO9C6HEd3PAyhDaDwguQmQbnj5a+Mo9ZP/ctgZyTZfsR/3Li1MFF\nnDpY5wKCvPMeDXVDfhYsfcaqtRPWAm56A/reZobYDHVCTcTnDeAwsBVY4ShZYOZ8vMGRNfC/e+HC\nGUh+HgZNLn1QBIVbyRxbXuH+2qJ8yEqH80fg/LGy4nRoJWQfB7W7XCBWaWPXaMkpUB2hSawpBuar\nqMKO/8Gi30POKRh4r7WSLbSZtz0zNCIuKb2OiASoqs0D/tQb6lV6HbsdVr8I3zxjCcAt70K7Wi7M\nWlzkEKejFcXp/FErqipTpQKIaO1GnFzmncx8Qf3jh33WKrZDy6FtPFz3AsRc5W2vDA2EWk2vIyK/\nBmYD2cBbWOUIngC+uhwnDTUk5zR8NsXKodXrZrj+JQiJqv37+AdaS2krW05bbIPsEy6CdMyKojKP\nwYktsHueVSLZlbAWZYfyygzttbcWShjqhqI8WPkPWP0SBIRCyt8h4efg5+9tzwyNlJoMu/1cVV8S\nkfFAS+AeLDEy4uNpDi6HTydbRbmufwkGTPLeeLx/gCO6aQ8dh1Q8b7dbQziu0VJJ9HRmN+xbDLa8\nste4W6XnKlChzcz8Q22wdxGkPm59Weh7m1VjJ6KVt70yNHJqIj4l//tTgNmqulXEPBE8ir0Ylj8H\ny5+F6Di487P6XxvFzw+i2lqv9oMqnle19pBkHi07tHf+qJUr7NBya4mvK0ERFaMlV7EKjzbiVBXn\nj1lpcXbPg+grYNI86Dzc214ZDEDNxGejiHwFdAamiUgkYK/mGsOlknXCinYOr4R+E63hkYZQCVIE\nIlpaL3dzDKqQd67cXFPJ3NNROLbWigBdCQi1BKmMOLksKY9o3Tj3OhUXwZpXrC8vqnDNn2DwQ2b1\noqFeURPxuReIBw6qaq6ItMAaejPUNvuXwKdToCgXbnwN4u/wtkd1h4hVhCyseeWLKfIzLUFyN7R3\nYgvkZpS19w+yVuW5rtJzHdqLatfw5jwOr4b5j1pDnVdMgOSZ1vs1GABVpcBmJyu/iJx8GzkFNrLz\nS15F5BTY8BNh0pBOHvelWvHBf8Y5AAAgAElEQVRRVbuIxAJ3OEbblqvqlzXpXESSgJewKpm+paoz\n3djcCkwHFNiqqnc42hcCicAqVb3OzXX/B9yjqhGO47uxNr6mO0xeVtW3HOcmAX9wtD+tqnNq4n+d\nUWyDpU9bNVJaXWmtZqtsyXRjJqQJtGkCbXq7P194wUWcjpSNnvZ9Zc1JueIXYAlQ+Q24JeLUJNZa\niOEL5JyBxU/B1g+tYcmJH8EVyd72ylCLFNrsDrEocgpGToGNnIIiFwGxjnNKjgsqttnsVa9wbhYW\nWD/ER0RmAgOB/ziaHhaRIao6rZrr/IFXgHFAGrBeROa6lrAWkThgGjBUVc+JiOss6PNAGDDFTd8J\nQFM3t/2vqj5UzrY58CcgAUvgNjr8OFeV/3VGZhp8cq81rDRgEiQ/C4Gh3vbKNwkKt3bmV7Y7vyjf\nsRH3SMWhvUPLIes41p+IA/GDyLaVzzvVh71O9mLYOBu+ngGFuTD8tzD8MQgK865fBie2YjsXCorJ\ndoiEq4CURB45jsgj2+W4xC6nwEZWvo1CW/WzHYH+QmRIIJEhAUQEBxAZEkBM01AiQyJd2gKJCAkg\n0nG+pK3k94iQusl8UpO7pADxqtYORBGZA2zGEo2qGATsV9WDjus+Am4AdrnYTAZeKRECVT1dckJV\nvxaRUeU7dYja88AdwE018H88sFhVzzquXwwkAR/W4FrPsmeBla2guAh+/Db0+Ym3PWrYBIZAdDfr\n5Q5bYelep/LidGyttTHT3V6nCsvIXY49KQLHN1tpcY5vgk7DYcIL0LK75+7XyLDblQuFZYemnILg\nElnkuAxZlbaViktuYXG19/ITLFFwCEJkSAAtI4PpHB1uCYVTLAKdAmG1OUTDIRwhgb4zjFxTiWsK\nnHX8XtPNGTHAMZfjNODqcjbdAURkNdbQ3HRVXVhNvw8Bc1X1hJtFdz8WkRHAXuARVT1WiR8x7joW\nkfuA+wA6dPDgOLmtEL7+s5WfrU1fa5itRVfP3c9QMwKCoHln6+WOkr1O5Tfgnj8K6Ztg11ywF5W9\nJiy6YnYI1+NL2bOVdx6+eRrWvwXhLeHmt6wvLmblH2DNa+QX2d1EEkVkOaMMl+EqNwKSk28jp9BG\nTfbgRwaXPvwjQwJoEhpIbLNQq9010nAIiPW7JSJRDuEIDfSnsS0iron4/A3YLCJLsZZdj6D6qAdK\nl2i7Uv6jDADigFFALLBSRHqr6nm3HYq0A25x2JfnS+BDVS0QkfuBOcCYGvphNarOAmaBleHAnc1l\nc+4wfHyP9W110H0w7i/eH7ox1AzXvU7usNutHHquq/RKoqdTu6z9Nrb8steENHWf+LUkegppWioq\nqrD9YystTu4P1t/P6Cch1N0ItG9SYCsuM+yU5RJlWPMbbtryHW0FpW3F1cxrAIQG+jujhpKoolVk\nSIW2EuEoPzwVGRJAeFAAfn6NSzRqi5osOPhQRJZhzfsIVlbrmqxfTQNc/5fGAsfd2KxV1SLgkIjs\nwRKj9ZX02R/oBux3fEsIE5H9qtpNVV2XOr0JPOtyj1Hl/FhWA/9rn11fwBe/sn6/9T248gavuGHw\nEH5+1gKGqHbQoXyQj2Ov05my2SFKxCnjABxYCkUXyl4TFFkqSHnn4Nh30G4A/PT/Qbv+dfO+aoCt\n2O5+eMoxX+EaWVhiURp55BSURiOFxdXPawQF+JXOVziEoH3zsDJt5YewIoLLikZEcAAB/o1wGX49\nokbDbqp6AphbciwiR4HqxqXWA3Ei0hlrBdrtWPM0rnwOTATeFZForGG4g1X4MR9o4+JHjqp2c/ze\n1uEnwI+A7x2/LwL+KiIlWROvpWaRW+1RlA9f/QHWv2k9OG6ZbapCNkZErMwCEa0gtpq9ThWG9o5B\nYbY1r3PV3bW2RNxuV3IKyw5FZeWXm/B2ioXDrqDinEdeUfXzGv5+UjaCCA6gTVSIy5BVoItYVNIW\nEkBwgO/Maxgq51KXNVQbZ6qqTUQewnr4+wPvqOpOEZkBbFDVuY5z14rILqxidY+XRDAishLoAUSI\nSBpwr6ouquKWD4vIjwAb1vzU3Q4/zorIXyiNpmaULD6oEzIOwMd3w8lt1ka/a/5kNvsZ3FOTvU4O\nVJXcwmKXaKPsfEV2uYlx53BVga3CMFZN3IoIKhtVNA0LsqIN1xVU7iINl4nxkEC/RjevYaicS81q\nfVRVG/TOtVrJar39E/jy19ZekRtfM/suLgNVpdiuFJf8tCt2O2WOi1Wx2yvaFdsVe7ljy7bkejvF\ndqqwq6w/Sq+tws5mL+uX3e5oc9pSIztbsZYZzqrBtAZhQf4uUUOgNcEdXCoQESEBLm2BzigkykVo\nwgL9zbyGoUbUSlZrxyZOd3/egvs9NoYSCnNh4e9g03vQPhF+8ra1J6SWsduVTUfPkZ1vTbC6Pqic\nDyx76UOx5GHm+vC0q/VQc314VrRTN3Y47OzOftzbVdYf2Ox2SwDKP2zLP8RVa7TqyNv4CQT4+eHn\nB/4i+PkJ/n5CgJ/gJ9bvJT8D/BznnXbg7+eHv+C0CwrwI9TRh7/jOkssyi63tcSi3MR4cCDhwf5m\nXsNQb6lq2K2qr/31pNBNPeT0bvjkHji9C4Y9aq1G8sAueVXlT3N38v7aI7XWp5/Lg8/5cHR5QLo+\nRC27koet4+FZ5pz18PQv14erTenDmBraiRu7kmv98PejCrvK+it56IslGuVsK+2vgqhghpQMhoug\nUvGpdylofIHcs/D2OCun2M/+B93GeuxWLy7ey/trj/DzoZ25vl/b0m/cVYqFO1FxCIh5eBoMhjqk\nbvIoNBbCmsN1L0LHoVZpAQ/xzqpD/Oub/dyW0J6nrutpRMNgMPgcRnxqGw+nyPl0Uxoz5u0iqVcb\nnrmptxEeg8Hgk5jZSB9iya5TPP7JNoZ2a8FLE+PNZLLBYPBZapLV+l9umjOx9up8UfsuGdzx3cEM\nfvnBJnq3i+KNOxPMRjuDweDT1OSrcwhWMbl9jldfoDlwr4j804O+GRzsSM/kF3M20L55GO/eM4iI\nYDNaajAYfJuaPMW6AWNU1QYgIq8BX2HV6dnuQd8MwMEzOUx6Zx1RoYG8f+8gmoWb7AgGg8H3qUnk\nEwOEuxyHA+1UtRgo8IhXBgBOZOZx59vrAHj/3kG0bWKKzBkMhoZBTSKf54AtjszWJSUV/ioi4cAS\nD/rWqDl7oZA7315HZl4RH92XSJeWEd52yWAwGGqNmpRUeFtEUrEqkwrwpKqWlEZ43JPONVZyCmzc\nM3sdx87mMufng+gdU9P6fQaDweAb1HTmeiAw3PF7MRXr8hhqiQJbMVPe38CO41m88bOrSOzSwtsu\nGQwGQ61T7ZyPiMwEfg3scrweFpG/edqxxkixXfn1h1tYvT+D53/Sl7FXtva2SwaDweARahL5pADx\nqmoHEJE5wGbquiBbA0dVefLT7SzceZI/XnclNw+o/SzYBt+k8OhRslIXkLt5E8FduhLarx+h8f0I\nbNOm+osNhnpKTYfdmmIVaAOo8QSEiCQBL2EVk3tLVWe6sbkVmI5VvmGrqt7haF8IJAKrVPU6N9f9\nH3CPqkY4jh8FfoFVTO4M8HNVPeI4V0zpsvCjqvqjmr6HumLmwt38d8MxHh7TjZ8P6+xtdwxepujk\nSbIWLCQrNZX87dafblDnzuR+u4azs2cDENCqFaH9+hLarx8hffsS2rs3fmFh3nTbYKgxNRGfvwGb\nRWQppavdqo16RMQfeAVrP1AasF5E5qrqLhebOEdfQ1X1nIi0cunieSAMmOKm7wQq1hTaDCSoaq6I\nPIC1Su82x7k8Va26NKQXeX35Ad5YfpA7EzvyyLju3nbH4CVsGRlkLVpEVmoqeRs2AhDSqxetHn+c\nqOQkAtu1w15YSMHu3eRt3Ube1q3kbdtG9mLHolN/f4Lj4qzIqG9fQuP7EdS5M+Jn0jAZ6h81qmQq\nIm2xFh0I8B3g57LirbJrBgPTVXW843gagKr+zcXmOWCvqr5VSR+jgMdcIx+HqC0B7gD2lUQ+5a7r\nD7ysqkMdxznu7KqiViqZ1oCP1h3liU+3c32/drx0W7ypGNnIKM7KInvxErLmz+fC2rVgtxPUrStN\nJkwgKjmZoE6dqu3DdvYsedssMcrfuo287duxZ2cD4BcZSWifPoQ4IqTQfv0IaNbMw+/K0FiplUqm\nrqjqCWCuyw2OAtWV0Y4BjrkcpwFXl7Pp7uhvNdbQ3HRVXVhNvw8Bc1X1RBUZne8FFrgch4jIBqwh\nuZmq+nk196gTFmw/wZOfbWdk95b845Z+RngaCfYLF8heuoys1FQurFyJFhUR2L49LSZPJiolheDu\ncReVrTygeXMiR40ictQoANRup/DQoTLRUcYbs8BuByCwQwcrMurXj9B+fQnp0QMJMpkzDHXLpSYJ\nq8n/DHc25cOsACAOGAXEAitFpLeqnnfboUg74BaHvfubivwMSABGujR3UNXjItIF+EZEtqvqATfX\n3gfcB9ChQ3Xaenms2vcDv/5oC/07NOP1n11FUIAZGmnI2AsKyFmxgqzUVHKWLkPz8wlo3ZpmP/0p\nURNSCOlde+UxxM+P4K5dCe7alaY332TdPzeX/J07LTHauo3cdevImjfPsg8KIqRnT0LjHXNH/eIJ\njGlnynUYPMqlik/1Y3VWpNPe5TiWivuD0oC1qloEHBKRPVhitL6SPvtj5Zrb7/iPESYi+1W1G4CI\njAV+D4xUVWfqn5IhQlU96MjU0B+oID6qOguYBdawWw3e4yWx+eg57nt/A11ahvPOpIGEBpkM1Q0R\nLSriwtq1ZM2bT/bXX2PPycG/WTOa3HQjTSZMIHTAgDqbj/ELCyNs4EDCBg50thWdPEnelq3OIbtz\n//1/6Jz3APBv0aLM3FFI7z74R4RX1r3BcNFUKj6O1WTuHsBCxcl+d6wH4kSkM5AO3I41T+PK58BE\n4F0RicYahjtYWYeqOh9wri91zOWUCE9/4A0gSVVPu9g0A3JVtcBxj6FYixE8wtvb36Z7s+4ktksk\n0C+wwvm9p7K55931REcE897PB9EkrKKNwXfR4mJyN2wkKzWV7EWLKD5/Hr/ISCKvvZaolBTCE69G\nAupHVvLANm0ITGpDVNJ4wBLL/L17yd+2zSlKOd98YxmLENytW+ncUd9+BHfrivibL06GS6Oq/wVV\nzbZXOxOvqjYReQhYhDWf846q7hSRGVi1gOY6zl0rIruwMic8rqoZACKyEugBRIhIGnCvqi6q4pbP\nAxHAx46oqGRJdU/gDRGxY22qnem64q42yS3KZfbO2WQWZNIkuAljO4wlqXMSA1sPxN/Pn2Nnc7nz\n7e8I9Pfj3/deTauoEE+4YahjVJX8rVvJTE0le8FCbGfOIKGhRI4ZQ9SEFMKHDcPPB+ZUJDCQ0F69\nCO3Vi2YTJwJQnJlJ3rbtjrmjrWQvXkLmJ/8DrGgqpE8f59xRaN++BLRs6c23YPAharTazWks0kZV\nT3rQn3rDpa52Kywu5Nvj37Lw8EKWHl1Kri2XFiEtGNZuDMs2xpB5vh0f3z+UHm2iPOC1oa5QVQr2\n7CFrfipZqakUpacjgYGEjxxBkwkTiBg5skHuuVFVio4ccc4d5W3dSv6ePWCzARDYrl2Z6Cik15X4\nBQd72WtDXXExq90uVnw2qeqAS/bMh6iNpdb5tnxWpq/ky/2pLDu2HJUimge35LquySR1SqJ3dO1N\nMhvqhoKDh8hKtQSn8OBB8PcnfMgQolJSiBx7Df6Rkd52sc6x5+eTv+t7Z3SUt3UrtuMnrJOBgYRc\ncUVpdNSvH4EdOpi/+waKJ8Vns6r2v2TPfIja2ueTX1TMXW+vY3PaSaYk53Ok4FtWpa/CZrcRExFD\nUqckkjoncUWzK8x/yHpKYVo6WQtSyUpdQMH334MIYQMHWoIz/lqzb8YNRadPW3NHJcu9d+xAc3MB\n8G/a1IqOHCvrQvv2wT/KjAQ0BDwpPg+q6quX7JkPURviU1Rs5/73N/LNntP86/b+XN+vHQBZhVl8\nc/QbFh5ayNoTaynWYjpFdSKpcxJJnZLo2rRrbbwFw2VQdPo02QsXkjU/lbytWwEI7dePqAkpRI5P\nIrB1q2p6MLiixcUU7N/vGK7bSv62bRTsPwCO509Qly7OlXWhffsS3L17vVmYYag5HhOfxsTlio/d\nrvz24618tjmdp2/szc8SO7q1O5d/jsVHFrPo8CLWn1yPosQ1i7Miok5JdIjy7H4jQym2c+fI/mox\nWamp5K5bB6oE9+hBVEoKUSnJBMWaZK+1SXF2Nvk7dpSZPyo+a6WQlNBQQnpd6Zw7Co3vR2Brk+W9\nvmPEpxa4HPFRVf785S7e/fYwj13bnYfGxNXoujO5Z/jqyFcsOryIzac3A3BliytJ7pTM+E7jaRvR\n9pL8MVROcU4O2UuWWNkGvl0DNhtBnToRNWECUSnJBHc1UWhdoaoUpac7lnlbEVLBru/RoiIAAlq3\nLjN3FNKrF36hprR8fcKITy1wOeLz0pJ9vLhkLz8f2pmnrut5SXM5J3JO8NWRr1hwaAE7M3YCEN8y\nnqTOSVzb8VpahpklrZeKPS+PnGVWepuc5SvQwkIC27UjakKKld6mRw8z/1ZPsBcWUvD992VSBRUd\nc2Tt8vcn+IrupXNH/foS1KmTSaTqRYz41AKXKj5zvj3Mn+bu5McDYnn+J31rJV/bsaxjLDqyiAWH\nFrD33F4EIaFNAkmdkhjbcSzNQ5pf9j0aOvbCQi6sWm1t/vzmGzQ3F/+W0UQlJROVkkxofLwRHB/B\ndvZsmbmjvG3bsefkAOAXFUVonz5lSk2YBSF1hxGfWuBSxOfchUJGPr+UQZ1b8PrPBhDgX/vfwA6e\nP8jCwwtZeHghhzIP4Sd+xLeMZ0TsCEbEjqBb027mIepAbTYufPedJTiLl2DPysK/SRMix48nKiWF\nsIEJZod+A0DtdgoPHiydO9q2jYK9e0sTqXbsYM0blSRSveIKk0jVQxjxqQUuNfLZdyqb9s3DCAn0\n7ENNVdl7bi9fHfmKlWkr+f7s9wC0C2/H8NjhjIwdyaC2gwj2b1wb/NRuJ2/zZmvz56JFFGdk4Bce\nTuTYa4iaMIHwwYORQJPSqKFjv3CBPEci1ZJ0QbYzZwBHItUrrywzfxTQziRSrQ2M+NQCdVXPp7Y4\neeEkK9NXsiJtBd+d+I48Wx4h/iEktk1kRPsRDI8ZTpvwhll2WVXJ37HT2vy5YAG2kyeR4GAiRo8m\nKiWZiBEj8AsxqYwaM6qK7eTJspkZdu5EC6z8w/7R0aWJVPv1I6R3b5NI9RIw4lML+Jr4uFJQXMD6\nk+tZfmw5K9NXkp6TDkCP5j0YHjOcke1H0rtFb/z9fHvIKX/vXke2gQUUHT0KgYFEDBtGVEoKEaNH\nm4eHoUq0qIj8PXvJ27aVfIcoFR4+bJ308yO4W7cyc0fBXU0i1eow4lML+LL4uKKqHDh/gBXpK1iR\ntoItp7dQrMU0C27G8NjhDI8dzpB2Q4gK8o0d5oVHjpC1YAFZ81Mp2LcP/PwIT0y0Nn+OHYt/kybe\ndtHgwxSfP0/e9u2lpSa2bcOemQmAX3h4xUSq0dFe9rh+YcSnFmgo4lOezIJMvj3+LcvTlrMqfRWZ\nBZkESAD9W/dnZOxIhscOp3NU53o1/l104gRZCxaSlZpK/o4dAIRedRVRKclEjR9vHgAGj6GqFB4+\nXGbuKH/v3tJEqjExZeaOgnv2bNSJVI341AINVXxcKbYXs+2HbaxIW8HytOXsO7cPgPaR7Z2r5xJa\nJxDkX/crg2w//EDWokVkpS4gb+NGAEJ697ayDSQnEdjWbLg1eAd7Xh75u3aV2XtkO+GSSLVnzzJl\nygPbt69XX+Y8iRGfWqAxiE95TuScYEXaClakW4sWCooLCA0IZXDbwYxsP5LhMcM9urm1ODPTyjYw\nfz4X1n4HdjvBcd2sbAPJyQR1dJ+iyGDwNkWnTltzRyWF+HbuLE2k2qwZoX37upSa6Ntgs58b8akF\nGqP4uJJny3MuWliRvoKTF6wyTle2uJIRsSMYGTuSK1tciZ9c3l4m+4ULZH+z1Mo2sGoVFBUR2KGD\nNaSWkkJI9+618XYMhjpFbTZHItVtzlIThfsPOM8Hde1aJjoKjotrEIlU6434iEgS8BJWJdO3VHWm\nG5tbgelYJbu3quodjvaFQCKwSlWvc3Pd/wH3qGqE4zgYeA+4CsgAblPVw45z04B7saqlPlxNRVTA\niI8rJXuKVqavZPmx5Wz7YRt2tdMipAXDY4czInYEg9sOJiIookb92fPzyVmxgqzUBeQsW4bm5xPQ\npg1RyQ7B6d2r0QxTGBoPxdnZ5G/fXjaR6rlzgJVINbRXL0LjrZV1of3ifTJzer0QHxHxB/YC44A0\nYD0w0bWEtYjEAf8PGKOq50Sklaqedpy7BggDppQXHxFJAH4N3OQiPg8CfVX1fhG53XHuNhG5EvgQ\nGAS0A5YA3VW1uCr/jfhUzrn8c6xKX8XKtJWsOr6K7MJsAvwCuKr1VYyMHcmI2BF0jCo7RKZFRVxY\ns4as+fPJXvI19gsX8G/Rgqjx44makEJo//4mJ5ehUaGqFKWlla6s27qV/O+/h5JEqm3alO49iu9H\nyJVX1vtEqvVFfAYD01V1vON4GoCq/s3F5jlgr6q+VUkfo4DHXMXHIWpLgDuAfS7is8hxvzUiEgCc\nBFoCT7je19WuKv+N+NQMm93GltNbrLmitBUcyLSGFjpFdWJ4u6GMyWhD2zUHuPDVYoozM/GLiiJy\n3FiiUlIIv/rqBjHUYDDUFvaCAiuRasnc0bZtFKWlWSf9/Qm54ooyZcqDOnWsV1/aLkZ8PPk/PwY4\n5nKcBlxdzqY7gIisxhqam66qC6vp9yFgrqqeKDc047yfqtpEJBNo4WhfW86PmIt7K4bKCPALIKFN\nAgltEng04VGOZR1j49cfkrvwKzptmEP4BTgdCGnxbQlJuoH+191NdBOzUs1gcIdfcDCh8fGExsfD\nXVabLSOjzNxR1twvOf/hR5Z9kyaORKqle4/8mzb14juoOZ4UH3eD9uXDrAAgDhgFxAIrRaS3qp53\n26FIO+AWh31N71cTP0r6vw+4D6BDB1PEraaoKgW7d5OVmkrB/FSuOH4cCQoidMQY0hM783XMeZad\nWcPpvA+Qzz+kd3Rv51Luns0vreSEwdBYCGjRgsgxo4kcMxqwqsIWHjxYJjr64bXXnIlUgzp2LDN3\nFHJF93qZz9CT4pMGtHc5jgWOu7FZq6pFwCER2YMlRusr6bM/0A3Y73hghYnIflXt5nK/NMewWxPg\nbA39AEBVZwGzwBp2q+H7bLQUHDxoJfBMTaXw0CEICCB8yGBa/vphIq65Bv+ICDoCQ4A/qLL77G6W\npy1nZdpKXt3yKq9seYVWoa2cixYS2yYSFhjm7bdlMNRrxN+f4Lg4guPiaPrjHwOORKo7djqjo5xv\nvyXzi7mWfXAwIb16lSlTHtC2rde/9HlyzicAa8HBNUA6lqDcoao7XWySsBYhTBKRaGAzEK+qGY7z\noyg351PuHjkucz6/BPq4LDi4WVVvFZFewAeULjj4GogzCw4ujcK0NLJSF1hRzu7dIELYoEFEpaQQ\nee24GtdOycjLYFX6KpanLWfN8TXkFOUQ6BfIoDaDnGLUPrJ99R0ZDIYKqCq2EyfKJlLdtcuZSDWg\nZcsyc0ehvXvhF375uRDrxYIDhyMpwD+x5nPeUdVnRGQGsEFV54olvf8AkrCWQT+jqh85rl0J9AAi\nsJZO31t+iXQ58QkB3seKjs4Ct6vqQce53wM/B2zAb1R1QXW+G/EppejUabIXLiAzNZX8rdsACI2P\ntwRn/PjLXhJaVFzEptObnIsWDmcdBqBLky7OlD/xreIJ9Kt/QwcGg6+ghYXORKp5W7eSv3UbhUeO\nWCf9/AiOi3NGR01uuumSFjLUG/HxZRq7+NjOnSN70VdkpaaSu349qBLcs6e1+TM5haBYz63ZOJJ1\nxClEG05twGa3ERkUydB2QxkRO4JhMcNoFmKqUxoMl4vt3Dlr75FLIlW/8HDiln5zSf0Z8akFGqP4\nFGdnk73ka7JSU7nw7bdQXExQ585WepuUZIK7dKlzny4UXWDN8TXOuaKM/Az8xI++0X2dixa6N+vu\n9fFrg6EhoHY7th9+ILDVpY1mGPGpBRqL+Nhzc8lZtozM1FQuLF+BFhURGBNjJfCckELwFVfUmwe7\nXe3sytjlTIS6K8Par9wmvA0jYiwhGtR2EKEB9XsjnsHQUDHiUws0ZPGxFxZyYdUqsuankr10KZqb\nS0DLlkQmJ9FkwgRC+vatN4JTFWdyzzirt357/FvybHkE+wczqM0gZ6aFthFmT5HBUFcY8akFGpr4\nqM3GhbXfkZWaSvbixdizs/Fv2pTI8eOJSkkhLOEqn67SWFhcyIZTG6yo6Nhy0nKsXeFxzeIYETOC\nke1H0je6r89XbzUY6jNGfGqBhiA+areTt2kTmfPnk73oK4rPnsUvIoLIsWOJmpBCeGJivdx8drmo\nKoeyDrEyzYqKNp3ahE1tNAluwrCYYYyIGcHQmKE0CTZVTw2G2sSITy3gq+KjquTv2GFt/lywANup\nU0hICJFjRlv51IYPb3SVFrMLs/n2+LesSFvByrSVnCs4h7/4069lP0a2H8mImBF0bdrVJ4YaDYb6\njBGfWsDXxCd/z16yUq1sA0XHjkFgIBHDh1t7cUaPqpUNZA2BYnsxOzJ2OJdy7z67G4CYiBiGxwxn\nZPuRDGwzkGD/xiXQBkNtYMSnFvAF8bEXFnL2ndlkzZ9Hwb794O9PeGKiJThjr8G/iRlWqo6TF046\nFy18d+I78mx5hAaEcnXbq62l3DEjaB3e2ttuGgw+gRGfWsAXxOfU889z9u13CE24yloaPX48AS1a\neNstn6WguMBZvXVl+krSc9IB6NG8h3NPUe8Wvc2iBYOhEoz41AL1XXzyd+3i0C230vTmm2j7l794\n250Gh6py4PwBVqRbq6kwaO0AABGXSURBVOe2ntlKsRbTPKS5tWghdgRD2g0hMijS264aDPUGIz61\nQH0WH7XZOHzb7RSdOkXX+fPM8FodkFmQyer01axIX8Gq9FVkFmQSIAEMaD3AGRV1iupkFi0YGjVG\nfGqB+iw+Ge++y+mZzxLz4gtEJSd7251Gh81uY/sP21l+bDkr0lew79w+ANpHtncmQk1onUCQf5CX\nPTUY6hYjPrVAfRWfwrR0Dl5/PeGDBhH7+mvmm3Y94HjOcVamrWR52nLWnVxHQXEBYQFhDG432ClG\n0aHR3nbTYPA4RnxqgfooPqrKsSlTyN2wka5fziUwxlQDr2/k2fJYd2KdM//cqdxTAPRq0YsRsSMY\nGTuSni164icXn67eYKjvGPGpBeqj+GSlppL+6G9pPe0Jmk+a5G13DNWgquw9t9e5p2jrma0oSouQ\nFs55osHtBvP/27v3KKvK847j398M13EEBxSqAoJLUKnLLCwSG21iSEVjoqRL6iWm8VZ1xZJLG22x\nVkRNU81FcyOrKIklTb2nKqaNBk0sQiWIihpQCyLRERDkJojhMvP0j70ZjydzY845ex+Y32ets2Zf\n3r3383CG95m9zz773a+nv4Nl+wYXnzKotuLTtHkzr57+KXoefDDD77l7r34OW3e18fcbmffmPOY2\nzmX+qvls2bGFHjU9GDt4bMuDUIf1G5Z3mGZdVjXFJx0m+7skI5nOjIibWmlzNjANCOD5iPhsuvwR\n4ARgXuEw2pJ+BIwFRDJM94URsVXSrcDH02Z1wKCIOCDdpgl4MV33ekSc2VHs1VZ8Vl97LZv+8wFG\n3HcvfUaPzjscK9HO5p0sXru45bOiFZtXADC83/CWy3NjBo/x6K37oOZobnk1RVPLz4h4f765iSCd\nb36/XeE2re2jteUdHqtovndtbyaNmtSl3Kqi+EiqJSkOpwCNwNPAeRGxtKDNSOBeYHxEbJQ0KCLW\npus+QVJELi8qPv0i4p10+hZgbXFRk/RFYExEXJzOtwy33VnVVHzeXbiQ1z9/AQMuuZjBV12VdzhW\nAW9seaPl2XML1yxkZ/NO6nvW85FDPtIyeuvAvpX5AnFbHVJzczPNNLd0hs2Rzjd3rsNrr7PrsJNM\njxFEy7Fbm+/o2O1Nd6nzL8p/Tzv2pmiqyHtYTgP7DOSJc57o0rZ7Unx6dOkInTMOWB4RK9Kg7gYm\nAksL2lwKTI+IjQC7C086/bikk4t3WlB4BPQlOWMqdh5wXXnSyFfz9u2smXodPYcM4aDJk/MOxypk\n6P5DOf/o8zn/6PPZtnMbC1YvaPms6Je/+yVCjGoYRe/a3qV37EXb7c1qVUuNalpeu+drVYukdudr\namqooab1+Zp2tmvleO2ta2+bD7SrqUWoJZZapfM1e7ifTsb0gbwKjp3VEzwqWXwOBd4omG8EPlzU\nZhSApPkkl+amRcQjHe1Y0h3A6SSF7KtF6w4DRgCFg5D3kbQI2AXcFBEPtrHfy4DLAIYNq45r7+tn\nzGDHypUMnTmTmr4eobM7qOtZx/hh4xk/bDwRwUsbXmJu41wWr1tMRHS+c+1EJ1lbU/sHHW5nOuDO\nHquznXB7HW57x7K9VyWLT2tfQCk+S+kBjAROBoYAT0o6JiI2tbfjiLgovaz3feAc4I6C1ecC90d8\n4E+6YRGxStLhwK8kvRgRr7ay39uA2yC57NZudhnYvmwZb98+k35nnkH9SSfmHY7lQBKjB45m9EB/\nzmf7lkr+6dAIDC2YHwKsaqXNQxGxMyJeA14hKUYdSovLPcBZRavOBe4qarsq/bkCeAIY07kU8hPN\nzayeeh21dXUMnjIl73DMzMqqksXnaWCkpBGSepEUhdlFbR4kvUNN0oEkl+FWtLVDJY7YPQ2cAbxc\nsP5IoAF4qmBZg6TeBcc4kQ9+7lSVNt17L+899xyDpkyhx4ABeYdjZlZWFbvsFhG7JE0GHiX5POfH\nEbFE0g3AooiYna6bIGkp0ARcFRHrASQ9CRwF1EtqBC4B5gCzJPUjuaz3PPCFgsOeB9wdH7yF72hg\nhqRmkmJ7U+Edd9Vo51trWfutb1N3wgn0/8zEvMMxMys7f8m0DXneat34xS+xde5cDp/9EL0OOyyX\nGMzM9tSe3Grt20WqzJbHHmPLnDkceMUVLjxmts9y8akiTVu3subGr9F71CgGXnxR3uGYmVVMJW+1\ntj207tbvsGvtWoZ877uopx+rYmb7Lp/5VIn3Fi9m45130nD++fT90IfyDsfMrKJcfKpA7NzJ6mun\n0mPwYA76ylfyDsfMrOJ82a0KrP/xHWxftowhP5xObb3HdjGzfZ/PfHK2Y+VK3p4+nf0nTGD/8ePz\nDsfMLBMuPjmKCFZPux716sXga67JOxwzs8y4+ORo8wMPsm3BAgZd+VV6Dh6UdzhmZplx8cnJrvXr\nWXvzzfQ97jgOOPvsvMMxM8uUi09O3rrpZpq2bePgG65HNX4bzKx7ca+Xg61PzuOdhx/mwEsvpfcR\nR+QdjplZ5lx8Mta8bRtrpk2j14gRDLz8srzDMTPLhb/nk7F106ez8803GfaTWdT07p13OGZmufCZ\nT4Z+v3QpG/5tFgf85ST2Gzcu73DMzHJT0eIj6TRJr0haLqnVsaAlnS1pqaQlku4sWP6IpE2Sfl7U\n/keSnpf0gqT7JdWnyy+UtE7S4vT11wXbXCBpWfq6oFL5tid27WL1tVOpbWhg0JVX5hGCmVnVqNhl\nN0m1wHTgFKAReFrS7MJRRCWNBK4GToyIjZIKv+zyTaAOuLxo138bEe+k298CTAZuStfdExGTi+IY\nAFwHjAUCeCaNY2OZUu2UDT/9Kb9fsoRDb/k2tf37Z3loM7OqU8kzn3HA8ohYERE7gLuB4jGhLwWm\n7y4EEbF294qIeBzYUrzTgsIjoC9JQWnPqcCciNiQHmcOcFrXUuqaHY1vsu6736P+Yx9j/09+MstD\nm5lVpUoWn0OBNwrmG9NlhUYBoyTNl7RAUqeKgqQ7gDXAUcD3C1adVXA5bugexFExEcGaG64HiT+a\nei1JzTQz694qWXxa62WLz1J6ACOBk4HzgJmSDuhoxxFxEXAI8BJwTrr4YWB4RBwLPAbM2oM4kobS\nZZIWSVq0bt26jsLolC2/+AXvzn2SQV/+Ej0PzazmmZlVtUoWn0ZgaMH8EGBVK20eioidEfEa8ApJ\nMepQRDQB9wBnpfPrI2J7uvp24E/2II7d+7wtIsZGxNiDDjqoM2G0q2nzZtb889fpc8wxNHzucyXv\nz8xsX1HJ4vM0MFLSCEm9gHOB2UVtHgQ+DiDpQJLLcCva2qESR+yeBs4AXk7nDy5oeibJWRHAo8AE\nSQ2SGoAJ6bKKe+ub36Rp06bkETq1tVkc0sxsr1Cxu90iYpekySQdfS3w44hYIukGYFFEzOb9wrAU\naAKuioj1AJKeJPlMp15SI3AJyc0CsyT1I7mc9jzwhfSQX5J0JrAL2ABcmMaxQdKNJMUQ4IaI2FCp\nvHd79zcL2Xz/zxhwycX0GT260oczM9urKKKjm8W6p7Fjx8aiRYu6tG3z9u28NvEzxK5dHD77IWrq\n6socnZlZ9ZH0TESM7UxbP16nAtbPmMGOlSsZOnOmC4+ZWSv8eJ0y275sGW/fPpN+Z55B/Ukn5h2O\nmVlVcvEpo2huZvXU66itq2PwlFafJmRmZrj4lFXz1q3U1NczaMoUegwYkHc4ZmZVy5/5lFFtv34M\nvW1G3mGYmVU9F58y8+NzzMw65stuZmaWORcfMzPLnIuPmZllzsXHzMwy5+JjZmaZc/ExM7PMufiY\nmVnm/FTrNkhaB/xuDzY5EHi7QuFUq+6YM3TPvLtjztA98y4l58MiolMjcbr4lImkRZ19lPi+ojvm\nDN0z7+6YM3TPvLPK2ZfdzMwscy4+ZmaWORef8rkt7wBy0B1zhu6Zd3fMGbpn3pnk7M98zMwscz7z\nMTOzzLn4dEDSaZJekbRc0h8MTyqpt6R70vW/kTS8YN3V6fJXJJ2aZdyl6mrekk6R9IykF9Of47OO\nvatKea/T9cMkbZV0ZVYxl0OJv+PHSnpK0pL0Pe+TZexdVcLvd09Js9JcX5J0ddaxl6ITeX9U0rOS\ndkmaVLTuAknL0tcFJQcTEX618QJqgVeBw4FewPPA6KI2VwD/mk6fC9yTTo9O2/cGRqT7qc07pwzy\nHgMckk4fA7yZdz6Vzrlg/c+A+4Ar884no/e6B/AC8KF0fuDe8DteYs6fBe5Op+uAlcDwvHMqY97D\ngWOBnwCTCpYPAFakPxvS6YZS4vGZT/vGAcsjYkVE7ADuBiYWtZkIzEqn7wc+oWREuYkkv6TbI+I1\nYHm6v71Bl/OOiOciYlW6fAnQR1LvTKIuTSnvNZI+Q/IfcklG8ZZLKXlPAF6IiOcBImJ9RDRlFHcp\nSsk5gP0k9QD6AjuAd7IJu2Qd5h0RKyPiBaC5aNtTgTkRsSEiNgJzgNNKCcbFp32HAm8UzDemy1pt\nExG7gM0kfwF2ZttqVUrehc4CnouI7RWKs5y6nLOk/YB/AK7PIM5yK+W9HgWEpEfTSzV/n0G85VBK\nzvcD7wKrgdeBb0XEhkoHXCal9Ell7888jHb7WhsTu/j2wLbadGbbalVK3slK6Y+Bm0n+Ot4blJLz\n9cCtEbF1LxxGvZS8ewAnAccD24DHJT0TEY+XN8SyKyXncUATcAjJ5acnJT0WESvKG2JFlNInlb0/\n85lP+xqBoQXzQ4BVbbVJT8X7Axs6uW21KiVvJA0BHgA+HxGvVjza8igl5w8D35C0EvgK8I+SJlc6\n4DIp9Xf8fyLi7YjYBvw3cFzFIy5dKTl/FngkInZGxFpgPrC3PH6nlD6p7P2Zi0/7ngZGShohqRfJ\nB4+zi9rMBnbf+TEJ+FUkn9DNBs5N75oZAYwEFmYUd6m6nLekA4D/Aq6OiPmZRVy6LuccEX8WEcMj\nYjjwHeDrEfGDrAIvUSm/448Cx0qqSzvojwFLM4q7FKXk/DowXon9gBOAlzOKu1SdybstjwITJDVI\naiC5ovFoSdHkfQdGtb+A04H/I7lL5Jp02Q3Amel0H5I7nJaTFJfDC7a9Jt3uFeCTeeeSRd7AP5Fc\nE19c8BqUdz6Vfq8L9jGNvehut1LzBj5HcpPFb4Fv5J1LpXMG6tPlS0gK7VV551LmvI8nOct5F1gP\nLCnY9uL032M5cFGpsfgJB2ZmljlfdjMzs8y5+JiZWeZcfMzMLHMuPmZmljkXHzMzy5yLj5mZZc7F\nx2wvJulkST8vtY1Z1lx8zCoo/Sa8/5+ZFfF/CrMykzQ8HWjsh8CzwF+lA649K+k+SfVpu9MlvSxp\nnqTvtXd2ImmcpP+V9Fz688hW2kyT9O+SfpUO+HVpwep6Sfenx/uPgqEgpkp6WtJvJd22e7lZpbn4\nmFXGkSQDcp0CXAL8eUQcBywC/k7JiJ8zSB67dBJwUAf7exn4aESMAaYCX2+j3bHAp4A/BaZKOiRd\nPobkoaejSQYTOzFd/oOIOD4ijiEZn+bTe5ypWRd4SAWzyvhdRCyQ9GmSDn9+elLRC3gKOApYEclA\ngwB3AZe1s7/+wCxJI0keZd+zjXYPRcR7wHuSfk0yBMAmYGFENAJIWkwyYuU84OPpODx1JKNULgEe\n7lrKZp3n4mNWGe+mP0UyAuR5hSsljdnD/d0I/Doi/kLScOCJNtoVP6xx93zhgH5NQI/07OuHwNiI\neEPSNJIHappVnC+7mVXWAuBESUcApMMPjCK5jHZ4WkgAzulgP/2BN9PpC9tpN1FSH0kDgZNJHqPf\nlt2F5u30c6hJHcRgVjYuPmYVFBHrSIrFXZJeIClGR6WXxq4AHpE0D3iLZKjmtnwD+BdJ84Hadtot\nJBlPaQFwY0S0OeBXRGwCbgdeBB6k/UJlVlYeUsEsJ5LqIxl6W8B0YFlE3FrC/qYBWyPiW+WK0axS\nfOZjlp9L0w//l5BcVpuRczxmmfGZj1kVkXQR8OWixfMj4m/yiMesUlx8zMwsc77sZmZmmXPxMTOz\nzLn4mJlZ5lx8zMwscy4+ZmaWuf8H15/lvQghF2EAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch5_1.best_score_, gsearch5_1.best_params_))\n",
    "test_means = gsearch5_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch5_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch5_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch5_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch5_1.cv_results_).to_csv('my_preds_reg_alpha_reg_lambda_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "train_scores = np.array(train_means).reshape(len(reg_alpha), len(reg_lambda))\n",
    "\n",
    "#log_reg_alpha = [0,0,0,0]\n",
    "#for index in range(len(reg_alpha)):\n",
    "#   log_reg_alpha[index] = math.log10(reg_alpha[index])\n",
    "    \n",
    "for i, value in enumerate(reg_alpha):\n",
    "    pyplot.plot(reg_lambda, -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'reg_alpha' )                                                                                                      \n",
    "pyplot.ylabel( '-Log Loss' )\n",
    "pyplot.savefig( 'reg_alpha_vs_reg_lambda1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## final model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "clf = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=82,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=6,\n",
    "        min_child_weight=4,\n",
    "        gamma=0,\n",
    "        subsample=0.7,\n",
    "        colsample_bytree=0.7,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        reg_alpha= 0.1, \n",
    "        reg_lambda= 0.001\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
